Asp.net mvc 3 所有页面上不存在导致问题的必填字段
我在MVC3应用程序中有一个“创建”页面,其中有4个输入字段,都是必需的。我还有一个“编辑”页面,可以编辑这4个字段中的3个。我不想显示第四个字段,而是想将其保持在初始值(该字段是创建条目的日期) 我在模型中将第四个字段标记为[Required],这会导致在编辑字段的post action方法中将模型声明为无效。如果我省略了[Required]注释,那么有人可以为这个第四个字段创建一个空值的用户 我怎样才能避开这个问题 型号代码:Asp.net mvc 3 所有页面上不存在导致问题的必填字段,asp.net-mvc-3,razor,Asp.net Mvc 3,Razor,我在MVC3应用程序中有一个“创建”页面,其中有4个输入字段,都是必需的。我还有一个“编辑”页面,可以编辑这4个字段中的3个。我不想显示第四个字段,而是想将其保持在初始值(该字段是创建条目的日期) 我在模型中将第四个字段标记为[Required],这会导致在编辑字段的post action方法中将模型声明为无效。如果我省略了[Required]注释,那么有人可以为这个第四个字段创建一个空值的用户 我怎样才能避开这个问题 型号代码: [Required] [DisplayNam
[Required]
[DisplayName("User Name")]
public string UserName { get; set; }
[Required]
public string Role { get; set; }
[Required]
[DataType(DataType.Date)]
[DisplayName("Insert Date")]
public DateTime? InsertDate { get; set; }
[Required]
[DisplayName("Active")]
public bool ActiveInd { get; set; }
控制器代码:
public ActionResult Edit(int id, ZUserRoleModel mod)
{
if (ModelState.IsValid)
{
// code removed
return RedirectToAction("Index");
}
return View(mod);
}
可以在编辑模式中将该字段设置为隐藏
@Html.HiddenFor(x => x.EntryDate)
您可以使用fluentvalidation: 有一个类似于
RuleFor(user => user.field4).NotEmpty().When(ViewContext.Controller.ValueProvider.GetValue("action").RawValue <> "edit")
RuleFor(user=>user.field4.NotEmpty().When(ViewContext.Controller.ValueProvider.GetValue(“操作”).RawValue“编辑”)
不确定您是否还需要对此问题的答案,但您需要做些什么才能解决此问题
@Html.HiddenFor(x => x.EntryDate )
若要工作,请将现有模型传递到视图中。因此,让我们假设您获取用户数据的操作如下所示。(您没有提供,因此我不确定这是否正确)
通过组合隐藏字段,视图将填充现有用户信息,隐藏字段将填充数据,并将其传递给编辑操作
注意:我没有做任何测试就写了这篇文章,但它应该仍然有效,或者至少,如果您仍然需要帮助,我希望它能为您指明正确的方向。您提出的问题至少对我来说不清楚,可以添加一些相关的代码,并简要说明发生了什么我尝试过这一点,但似乎不起作用。当我在编辑后保存时,没有返回到索引页,而是什么也没有发生。这是因为我在编辑方法的post操作中有一个ModelState.IsValid测试,即使我包含了HiddenFor行,该测试也返回为false。
Public ActionResult GetUser(int UserID)
{
ZUserRoleModel model = new ZUserRoleModel(UserID);
// Maybe this could go to your database and gather user
// It would populate the correct data into a model object
return View("Edit", model);
}