Получить параметр в контроллер, используя метод GET в Ajax - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть этот код в CS html файле

@using (Html.BeginForm("UserPermission", "UserPermision", new { area = "Admin", id = "cbbDpm", name = "cbbDpm" }, FormMethod.Post))
   {
      @Html.DropDownListFor(m => m.Dept, new SelectList(Model.Dept, "DepartmentName", "DepartmentName"), "-- Select Department --", new { @class = "form-control w-100", @id = "cbbDpmt", @name = "cbbDpmt" })
   }
...
<div id="partialDiv">
   @Html.Partial("_Table")
</div>
...
<script>
    $(document).ready(function () {
        $("#cbbDpmt").on("change", function () {
            $.ajax(
                {
                    url: '/Admin/UserPermision/CBBSelectedChange?dpmname' + $(this).val(),
                    type: 'GET',
                    data: "",
                    contentType: 'application/json; charset=utf-8',
                    success: function (data) {
                        $("#partialDiv").html(data);
                    },
                    error: function () {
                        alert("error");
                    }
                });
        });
    });
</script>

И в контроллере, у меня есть:

[HttpGet]
public PartialViewResult CBBSelectedChange(string dpmname)
{
 List<AdminUserPermission> userModels = DatabaseServer.ConvertDataTable<AdminUserPermission>(DatabaseServer.Read_Table(@"SELECT * 
                                                          FROM dbo.tblWFX_UserGroup AS gr 
                                                          JOIN dbo.tblWFX_Department AS dpm ON gr.DepartmentName = dpm.DepartmentID 
                                                          WHERE dpm.DepartmentName = " + dpmname, false));
 Session["selectedDept"] = dpmname;
 AdminUserPermissionParty adminUserPermissionParties = new AdminUserPermissionParty();
 adminUserPermissionParties.UserPermisionModel = userModels;
 return PartialView("_Table", adminUserPermissionParties);
}

Я хочу положить выбранный элемент из выпадающего списка в CS html в функцию в контроллере. Я пытаюсь исследовать много раз, но не могу поместить выбранное значение из cbb в строку dpmname. Пожалуйста, помогите мне.

1 Ответ

0 голосов
/ 13 апреля 2020

Вам необходимо использовать [FromUri]

[HttpGet]
public PartialViewResult CBBSelectedChange([FromUri] string dpmname)

, а также изменить Ajax вызов следующим образом:

 $.ajax(
        {
            url: '/Admin/UserPermision/CBBSelectedChange?dpmname=' + $(this).val(),
            type: 'GET',
            contentType: 'application/json; charset=utf-8',
            success: function (data) {
                $("#partialDiv").html(data);
            },
            error: function () {
                alert("error");
            }
        });

См .: https://docs.microsoft.com/en-us/aspnet/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api

...