Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在MVC的Ajax调用中正确使用HTML.DropDownList_Ajax_Asp.net Mvc - Fatal编程技术网

如何在MVC的Ajax调用中正确使用HTML.DropDownList

如何在MVC的Ajax调用中正确使用HTML.DropDownList,ajax,asp.net-mvc,Ajax,Asp.net Mvc,我使用SelectList构造函数(IEnumerable、String、String)以编程方式填充SelectList 我以前使用这种结构时,有一个ajax调用,它的成功方法是返回更新的模型——但它的主体(posify to AssignPermission(iUserID))根据下拉列表中选择的项对viewmodel进行操作 $.ajax({ url: "~/../../User/AssignPermission", type: "PO

我使用SelectList构造函数(IEnumerable、String、String)以编程方式填充SelectList

我以前使用这种结构时,有一个ajax调用,它的成功方法是返回更新的模型——但它的主体(posify to AssignPermission(iUserID))根据下拉列表中选择的项对viewmodel进行操作

  $.ajax({

            url: "~/../../User/AssignPermission",
            type: "POST",
            data: $.postify({ "p_permId": optionSelectedPerm.value, "p_UserId": iUserId }),
            cache: false,
            success: function () {
                ReloadUserPermissions();
            },
            error: function () {
                // alert("FAIL");  //TODO ?
            }
        });
我试图为一个新页面复制这个结构,但是我没有使用Ajax调用的successresults方法,而是尝试在主要Ajax工作中返回更新的模型。。如果上面的例子是这样构造的,那么就没有success函数,controlleractionresult方法将返回更新后的模型。这不管用。我在调试时看到视图中的数据(已更新),但它没有更新视图

我是否必须使用Ajax调用的success函数来更新视图

<script type="text/javascript">

        $(document).ready(function () {
            var optionSelectedPerm;
            var mvcTmpData_iCurrentRoleID;
        });

        function SelectedRole(p_lstRole) {
            debugger;
            mvcTmpData_iCurrentRoleID = $("#ddlSelectedRole").val();
            $.ajax({
                url: "~/../../AdminRoles/AdminRolePermissions",
                type: "POST",
                data: $.postify({ "p_nullRoleId": mvcTmpData_iCurrentRoleID }),
                cache: false,
                success: function () {
                        AjaxReloadRolePermissions();
                },
                error: function () {

                },
            });

              function AjaxReloadRolePermissions() {
                //alert("Current RoleID: " + mvcTmpData_iCurrentRoleID);

            var url = '@Url.Action("ReloadRolePermissions", "AdminRoles", new { p_RoleId = "zReplaceRoleId" })';
            window.location.href = url.replace('zReplaceRoleId', mvcTmpData_iCurrentRoleID);
        }

        }

</script>

$(文档).ready(函数(){
var期权选择Perm;
var mvcTmpData_iCurrentRoleID;
});
函数SelectedRole(PlstRole){
调试器;
mvcTmpData_iCurrentRoleID=$(“#ddlSelectedRole”).val();
$.ajax({
url:“~/../../AdminRoles/AdminRolePermissions”,
类型:“POST”,
数据:$.postfy({“p_nullRoleId”:mvcTmpData_iCurrentRoleID}),
cache:false,
成功:函数(){
AjaxReloadRolePermissions();
},
错误:函数(){
},
});
函数AjaxReloadRolePermissions(){
//警报(“当前角色ID:+mvcTmpData_iCurrentRoleID”);
var url='@url.Action(“重新加载RolePermissions”,“AdminRoles”,new{p_RoleId=“ZrPlaceRoleId”});
window.location.href=url.replace('zReplaceRoleId',mvcTmpData\u iCurrentRoleID);
}
}
请注意,为了完成第一个工作场景,Ajax调用“AssignPermission”中引用的控制器方法是EmptyResult类型的ActionResult,并标记为[HttpPost],因此它基本上可以工作,而不必担心实际返回。但是这个Ajax调用的Success函数允许我使用新调整的ViewModel更新视图


我复制原始结果的尝试失败了,我看到了模型内容,但它没有在视图中呈现

如果有人关心的话,它非常简单Ajax函数的主要工作不能调用控制器操作来更新视图。但是,Ajax成功调用确实可以调用控制器的一个ActionResults来更新视图,然后更新该视图中的相关部分

ajax调用的主要部分中的控制器操作需要标记为EmptyResult&[HttpPost]

真正触发ActionResult以更新视图的控制器操作,在我的示例中,只返回视图和新修改的模型。。。再次请注意,前面引用的ajax函数的Success函数调用了它,上面的最后一篇代码几乎涵盖了这一切

  $.ajax({

            url: "~/../../User/AssignPermission",
            type: "POST",
            data: $.postify({ "p_permId": optionSelectedPerm.value, "p_UserId": iUserId }),
            cache: false,
            success: function () {
                ReloadUserPermissions();
            },
            error: function () {
                // alert("FAIL");  //TODO ?
            }
        });
<script type="text/javascript">

        $(document).ready(function () {
            var optionSelectedPerm;
            var mvcTmpData_iCurrentRoleID;
        });

        function SelectedRole(p_lstRole) {
            debugger;
            mvcTmpData_iCurrentRoleID = $("#ddlSelectedRole").val();
            $.ajax({
                url: "~/../../AdminRoles/AdminRolePermissions",
                type: "POST",
                data: $.postify({ "p_nullRoleId": mvcTmpData_iCurrentRoleID }),
                cache: false,
                success: function () {
                        AjaxReloadRolePermissions();
                },
                error: function () {

                },
            });

              function AjaxReloadRolePermissions() {
                //alert("Current RoleID: " + mvcTmpData_iCurrentRoleID);

            var url = '@Url.Action("ReloadRolePermissions", "AdminRoles", new { p_RoleId = "zReplaceRoleId" })';
            window.location.href = url.replace('zReplaceRoleId', mvcTmpData_iCurrentRoleID);
        }

        }

</script>