Home > other >  ASP.NET Core MVC : HTTP POST method not return to view
ASP.NET Core MVC : HTTP POST method not return to view

Time:12-13

View:

@Html.DropDownList("bolumler", null,  "lutfen bolum secin", 
                   new {@class = "form-control", 
                   @onchange="SelectedIndexChanged(this)"})

<script type="text/javascript">
    function SelectedIndexChanged(item) {

    var value = item.value;

    $.ajax({
        type: "POST",
        url: "@Url.Action("GoTo")",
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        data:JSON.stringify( value ),
        success: function (data) {
            alert(data);
        },
        failure: function (errMsg) {
            alert(errMsg);
        }
    });
}
</script>        

Controller:

[HttpPost]
public async Task<IActionResult> GoTo([FromBody] string d)
{
    var personeller = await _iluPersonelService.getPersonelWithDepartment(d);

    List<SelectListItem> valuesForPersonel = (from x in personeller
                                              select new SelectListItem
                                                  {
                                                      Text = x.Name,
                                                  }).ToList();

    ViewBag.personeller = valuesForPersonel;

    return View();
}

I can't figure out this problem. In .cshtml side, I change dropdownlist selection item and controller post method triggering. I did some operations on the data and I want to return new data to view and display it.

Note: there are no changes on the page and it is not refreshed

CodePudding user response:

Do you want to alert(data) ? If so , do you want the below way ?

  1. change the action like below:

         [HttpPost]    
         public async Task<IActionResult> GoTo([FromBody] string d)
         {  
          ...  
         return Json(valuesForPersonel);
         }
        public IActionResult Goto()
       {
         return View();
       }
    

2.In the view: change the success method code in your ajax:

$.ajax({
        type: "POST",
        url: "@Url.Action("GoTo")",
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        data: JSON.stringify(value),
        success: function (data) {
            for (var i = 0; i < data.length; i  ) {
                alert(data[i].text);
              window.location.href = "https://localhost:7169/RtCd/Goto";
        }},
        failure: function (errMsg) {
            alert(errMsg);
        }


    });

result:

enter image description here

  • Related