0

jQuery Ajaxリクエストを使用してウェブグリッドをフィルタリングしていますが、いくつかのウェブグリッドといくつかのajaxリクエストがあります。各Ajaxリクエストは同じActionResultメソッドを呼び出しますが、異なるパラメーターを渡します。アイデアは、私が提供するパラメーターに基づいて正しいメソッドが呼び出されるということです。しかし、これはそうではありません。

このエラーが発生します:

The current request for action 'FilterGrid' on controller type 'UserManagerController' is ambiguous between the following action methods:<br>System.Web.Mvc.ActionResult FilterGrid(Int32, Int32, System.String, System.String, Int32, System.String) on type UserManager.Controllers.UserManagerController<br>System.Web.Mvc.ActionResult FilterGrid(System.String) on type UserManager.Controllers.UserManagerController

私のjQuery

 function filterGrid() {
        var filters = getFilterVals();
        $.ajax({
            url: '@Url.Action("FilterGrid", "UserManager")',
            type: "POST",
            async: true,
            dataType: "html",
            data: "group=" + filters.group,
            success: function (data) {
                $('#webgrid-wrapper').empty().html(data);
            },
            error: function (data) {

            }
        });
    }

私のコントローラーコード

[HttpPost]
public ActionResult FilterGrid(int alf, int brad, string username, string group, int isactive, string email)
{

    List<UserManager.Models.vw_UserManager_Model> modelList = DAL.getGridUsers(alf, brad, username, group, isactive, email);

    switch (alf)
    {
        case 1:
            Session["chkBoxAlf"] = 1;
            break;
        case 0:
            Session["chkBoxAlf"] = 0;
            break;
    }

    switch (brad)
    {
        case 1:
            Session["chkBoxBrad"] = 1;
            break;
        case 0:
            Session["chkBoxBrad"] = 0;
            break;
    }

    switch (isactive)
    {
        case 1:
            Session["chkBoxIsActive"] = 1;
            break;
        case 0:
            Session["chkBoxIsActive"] = 0;
            break;
    }

    Session["txtFilterUsername"] = username;
    Session["txtFilterGroup"] = group;
    Session["txtFilterEmail"] = email;

    return PartialView("~/Views/Partial/_WebGridUserManagerUsers.cshtml", modelList);
}

[HttpPost]
public ActionResult FilterGrid(string group)
{
    return PartialView("~/Views/Partial/_WebGridUserManagerGroups.cshtml");
}

私のブレークポイント

 [HttpPost]
        public ActionResult FilterGrid(string group)
        {
            return PartialView("~/Views/Partial/_WebGridUserManagerGroups.cshtml");
        }

ヒットしません。誰かがこれを解決する方法を知っていますか?

4

2 に答える 2

4

フレームワークはどちらを呼び出すかわからないため、同じ名前の POST メソッドを 2 つ持つことはできません。ただし、ActionName を構成できます。

[ActionName("MethodName")]
public ActionResult Filter(string group){}

そして、あなたの ajax で ~/Controller/MethodName を呼び出します

于 2012-12-07T10:43:52.743 に答える
-1

両方の関数の名前は同じです。一方の名前を変更してみてください。

于 2012-12-07T10:40:35.443 に答える