【发布时间】:2013-05-17 09:51:24
【问题描述】:
我一直在 stackoverflow 上寻找这个答案。似乎无法与他们一起去任何地方。我有一个实体,它有 5 个导航属性到其他实体。示例:
public class Computer : DbEntity
{
public virtual Ram Ram { get; set; }
public Guid RamId { get; set; }
public virtual Hdd Hdd { get; set; }
public Guid HddId { get; set; }
// etc. etc. you get the picture
}
为了构建视图,我为Hdd 和Ram 等创建了部分视图,并将它们引用到主视图中:
@model ComputerSite.ViewModels.ComputerViewModel
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<fieldset>
<legend>Computer Details</legend>
... some fields ...
</fieldset>
Html.RenderPartial("Create", "Ram");
Html.RenderPartial("Create", "Hdd");
}
我对此进行了测试,它工作正常,所有数据都被发送回 ViewModel,并且可以保存在数据库中,所以我知道所有这些工作。当Computer 没有Ram 时,问题就来了。我希望能够选中一个框来说明不包括在内。并在提交表单时绕过Ram验证。
应该有一个非常简单的方法,我不介意它是否是一个 JavaScript 函数,它会改变一些 data- 属性客户端。我只是不完全确定从哪里开始,自定义属性不是前进的方向。似乎只是改变一些领域。如果未选中复选框并且验证已到位,我仍然希望验证字段,并且该位有效,因此为什么我要问这个问题,我只需要能够有选择地关闭不同部分表格。
哦,顺便说一句,我在任何实体类中的属性都没有[Required] 属性!
如果您使用 JavaScript,请提供示例。我已经 100% 精通它了。
【问题讨论】:
-
您只对 JS 解决方案持开放态度吗?
-
好吧,我正在使用 jquery 不显眼的验证,所以它必须是与之相关的东西,我无法想象我需要在服务器端做任何事情。只用JS禁用几个字段,你有什么建议?
-
我经常使用fluentvalidation.codeplex.com。它只支持客户端的简单验证,但它对服务器端非常强大
标签: c# javascript jquery asp.net-mvc-3