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");
}