Entity framework 使用模型弹出窗口在模型更新后更新partialview

Entity framework 使用模型弹出窗口在模型更新后更新partialview,entity-framework,asp.net-mvc-4,Entity Framework,Asp.net Mvc 4,我有一个包含两个部分视图的索引页。一个用于显示角色,另一个用于显示相应的权限 @model IEnumerable<sample.Models.Role_Privilege_Map> @{ ViewBag.Title = "RolePrivilgeMapping"; } <h2>RolePrivilgeMapping</h2> <script> $(document).ready(function () {

我有一个包含两个部分视图的索引页。一个用于显示角色,另一个用于显示相应的权限

@model IEnumerable<sample.Models.Role_Privilege_Map>

@{
    ViewBag.Title = "RolePrivilgeMapping";
}

<h2>RolePrivilgeMapping</h2>

<script>

    $(document).ready(function () {
        registerTableClick();
        //$("#tblRole tbody tr:first").trigger();
    });

    function registerTableClick() {
        $("#tblRole tbody tr").on("click", function () {

            $(this).siblings().removeClass('selected_row');

            $(this).addClass("selected_row");

            var roleId = parseInt($(this).find("td:eq(0)").text());
            loadPrivilege(roleId);
        });


        function loadtrackPrivilege(roleId) {
            $("#PrivilegeWrapper").load("@Url.Action("PrivilegesPartial", "RolePrivilegeMapping")",
                                         { 'roleID': roleId },
                                        function (response, status, xhr) {
                                            if (status == "error") {
                                                alert("An error occurred while loading privileges.");
                                            }
                                        });
        }


    }

</script>

<div id="RolePrivilgeMappingWrapper">

    <div class="float-left" id="roleWrapper">
        @Html.Partial("_Role", sample.Models.DataProvider.DataProvider.GetRoleNames())
    </div>

    <div class="float-left" id="PrivilegeWrapper">
        @Html.Partial("_Privilege", sample.Models.DataProvider.Provider.GetPrivilegeNames())
    </div>


</div>
编辑方法是

 public ActionResult EditRole(webpages_Roles webpages_roles)
        {
            if (ModelState.IsValid)
            {
                db.Entry(webpages_roles).State = EntityState.Modified;
                db.SaveChanges();
            }

            return View("index");
        }
我的问题是
1.对话框未关闭。我必须手动点击十字 酒吧。
2.在我必须刷新页面之前,角色部分视图不会得到更新


我跟随了这个链接
http://www.mindstick.com/Articles/279bc324-5be3-4156-a9e9-dd91c971d462/CRUD%20operation%20using%20Modal%20dialog%20in%20ASP%20NET%20MVC#.VVlyBLmqpHx

您需要显示代码!我们猜不出你做错了什么。在任何情况下,它都应该是
returnpartialview(“index”)@stephen Mceucke。添加了代码您的代码有很多潜在问题。所有脚本都需要放在主视图中(脚本永远不应该放在部分视图中)。您的
Ajax.BeginForm()
方法没有指定
UpdateTargetId
(呈现该方法返回的内容的元素)。方法返回
View()
(它必须是
PartialView()
.live()
已贬值(改用
.on()
)@stephen Mceucke。谢谢你的宝贵意见。我正处于学习阶段。我从这里得到了一些代码,我不确定你是否需要返回一个视图。您的表单已经有您正在保存的编辑值,因此您可以使用新值更新相应的表行。您甚至不需要
Ajax.BeginForm()
——只需使用Ajax提交值即可。而且您似乎没有用所选行中的当前值填充表单。
  @model sample.Models.webpages_Roles

        @{
            ViewBag.Title = "Edit";
        }

        <h2>Edit</h2>

        @using (Ajax.BeginForm("EditRole", "RolePrivilegeMapping", new AjaxOptions { HttpMethod = "POST" }))
        {
            @Html.ValidationSummary(true)

            <fieldset>
                <legend>webpages_Roles</legend>

                @Html.HiddenFor(model => model.RoleId)

                <div class="editor-label">
                    @Html.LabelFor(model => model.RoleName)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(model => model.RoleName)
                    @Html.ValidationMessageFor(model => model.RoleName)
                </div>

                <p>
                    <input type="submit" value="Save" />
                </p>
            </fieldset>
        }
@using (Ajax.BeginForm("EditRole", "RolePrivilegeMapping", new AjaxOptions { HttpMethod = "POST" }))
 public ActionResult EditRole(webpages_Roles webpages_roles)
        {
            if (ModelState.IsValid)
            {
                db.Entry(webpages_roles).State = EntityState.Modified;
                db.SaveChanges();
            }

            return View("index");
        }