Razor:@Html.HiddenFor() 需要关闭验证

dra*_*wer 5 validation razor

请问你能帮帮我吗。

我有一堂课:

public class Product
{
   ...

   // NOT REQUIRED!
   public virtual Category Category{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)

但是当我在视图中创建

@Html.HiddenFor(model => model.Category.Id), or
@Html.Hidden("model.Category.Id", model => model.Category.Id)
Run Code Online (Sandbox Code Playgroud)

razor 为此添加了验证属性。

  1. 如何关闭它?(在模型中,在视图中)
  2. 如果属性具有 [Required] 属性,如何关闭验证事件?

我发现这不是一个剃刀问题,它在 MVC 中的某个地方。即使我设法将 "Category.Id" value = "" 传递给服务器,TryModelUpdate() 也会失败 - 它需要设置 "Category.Id",但在我的模型中不需要。

为什么会这样??!

Bri*_*ins 0

设置隐藏,例如:

@Html.Hidden("CategoryIdHidden", model => model.Category.Id)
Run Code Online (Sandbox Code Playgroud)

并将发布的隐藏值与模型绑定内容分开处理...我认为验证是特定于 UI 的,而不是特定于模型的,因此它不会验证类别 ID。

或者,在隐藏中提供默认值“0”。如果category.ID 的类型为int,则“”值可能无法正确计算,因此它为空,因此会出错。

HTH。