【发布时间】:2014-10-21 16:35:48
【问题描述】:
我有一个有效的提交按钮,所以当我对表单进行更改并单击提交表单更新时...
但是。在数据库中,它显示新数据。但是当我 RedirectToAction 到最后一页时,它不会显示更新的数据。
这是我的代码(控制器):
[HttpPost]
public ActionResult Save(M2Portal.Areas.Admin.Models.Users.Roles roleForm)
{
try
{
if (ModelState.IsValid)
{
var role = Srvctx.Roles.FirstOrDefault(w => w.RoleID == roleForm.RoleId);
role.RoleDescription = roleForm.RoleDescription;
Srvctx.SubmitChanges();
return RedirectToAction("RoleManagement");
}
return RedirectToAction("RoleManagement");
}
catch
{
return RedirectToAction("RoleManagement");
}
}
所以当它命中时:
return RedirectToAction("RoleManagement");
它只是转到页面但不刷新数据。但是当我查看我的数据库时,它已经在那里更改了。
我是 ASP.NET MVC 的新手,不知道从哪里开始寻找......
有什么想法吗?
角色管理:
public ActionResult RoleManagement(string userName)
{
return View("RoleManagement", new UserForm(userName));
}
角色管理cshtml:
@foreach (M2DAL.M2Service.Role r in Model.AllRoleIDs)
{
<tr>
<td>@r.RoleName</td> //This is not refreshing, on debug shows the number, but browser shows old number)
<td>@r.RoleID</td>
<td>@Html.ActionLink("Edit Roles", "EditRole", "Users", new { roleId = r.RoleID }, new { @class = "action" }) </td>
</tr>
}
【问题讨论】:
-
发布
RoleManagement方法的代码 - 问题出在哪里(当模型无效而不是返回视图时,您真的想重定向到RoleManagement吗?) -
iv 添加了角色管理,这只是一个cshtml页面
-
RoleManagement方法需要一个参数userName但您没有向该方法传递任何内容。不确定new UserForm(userName)做了什么,但userName将是null。当您重定向时,它应该是return RedirectToAction("RoleManagement", new { userName = "SomeValue" });(并且大概userName是您在发布表单时在Roles中的一个属性的值) -
当我调试时,用户名确实显示为空,但在 cshtml 中,角色名显示为新数据。但由于某种原因它不在浏览器中!
-
很难说。我什至不知道
new UserForm(null)做了什么。看看你之前的问题,AllRoleIDs是Role类型的属性,而RoleManagement返回UserForm类型的模型,那么这两种类型都有AllRoleIDs属性吗?我真不知道你在这里做什么。 (ps。将方法放入模型中以访问数据库不是很好的做法)