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

时间:2011-07-28 18:07:54

标签: validation razor

请帮助我。

我有一个班级:

public class Product
{
   ...

   // NOT REQUIRED!
   public virtual Category Category{ get; set; }
}

但是在视图中我创建了

@Html.HiddenFor(model => model.Category.Id), or
@Html.Hidden("model.Category.Id", model => model.Category.Id)

razor为此添加了验证属性。

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

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

    为什么会这样??!

2 个答案:

答案 0 :(得分:0)

设置隐藏的类似:

@Html.Hidden("CategoryIdHidden", model => model.Category.Id)

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

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

HTH。

答案 1 :(得分:0)

我用这样的拐杖解决了同样的问题:

  @{ Html.EnableUnobtrusiveJavaScript(false); }

  @Html.HiddenFor(t => t.Prop1)
  @Html.HiddenFor(t => t.Prop2)

  ...

  @{ Html.EnableUnobtrusiveJavaScript(true); }