请帮助我。
我有一个班级:
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为此添加了验证属性。
我发现这不是一个剃刀问题,它在MVC的某个地方。 即使我设法将“Category.Id”value =“”传递给服务器,TryModelUpdate()也会失败 - 它需要设置“Category.Id”,但在我的模型中不需要它。
为什么会这样??!
答案 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); }