我正在尝试修复提交按钮。对MVC来说很新。
问题来自现有的保存按钮,我尝试将代码复制到新的保存按钮。
这是我的.cs代码
[HttpPost]
public ActionResult Save(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");
}
主要问题是:
if (ModelState.IsValid)
显示为false,但它假设显示的内容而不是任何内容!!
当我点击保存时,它只会转到RoleManagement,但如果我做了任何修改,则不会进行更改。
任何想法出错的地方。
由于
我的角色课
public class Roles
{
[DisplayName("Role ID")]
[Required]
public int RoleId { get; set; }
[DisplayName("Role Description")]
[Required]
public string RoleDescription { get; set; }
[DisplayName("Customer Blacklist")]
[Required]
public List<M2DAL.M2Service.vw_RoleCustomerBlacklist> CustomerBlacklist { get; set; }
private readonly M2ServiceDataContext _m2Sctx = new M2ServiceDataContext();
public List<M2DAL.M2Service.Role> AllRoleIDs { get; set; }
public Roles()
{
}
public Roles(int roleId)
{
RoleId = roleId;
RoleDescription = _m2Sctx.Roles.Where(s => s.RoleID == RoleId).Select(c=>c.RoleName).FirstOrDefault();
CustomerBlacklist = _m2Sctx.vw_RoleCustomerBlacklists.ToList();
}
}
答案 0 :(得分:1)
如果ModelState
为false
,那么您有验证错误,因此您需要返回视图,以便用户可以更正这些错误,而不是重定向。
if (ModelState.IsValid)
{
// save changes and redirect
}
return View(roleForm);
我认为您的视图包含@Html.ValidationMessageFor
帮助程序以显示这些错误。您的catch语句也不应重定向到RoleManagement
,因为这并不表示发生了错误。考虑抛出异常会显示错误页面或向ModelState
添加错误消息并返回视图。
答案 1 :(得分:0)
我认为这是因为您正在重定向,因此呈现新页面。如果您有验证错误,您想要使用错误的数据再次呈现同一页面(那么您将看到所有验证错误)。
将return RedirectToAction("RoleManagement");
替换为
return View("RoleManagement", roleForm);