Asp.net mvc 使用ASP.NET MVC 3过滤post数据中的某些属性值
我有一个如下的模型:Asp.net mvc 使用ASP.NET MVC 3过滤post数据中的某些属性值,asp.net-mvc,asp.net-mvc-3,razor,Asp.net Mvc,Asp.net Mvc 3,Razor,我有一个如下的模型: public class MyModel { [Required] public string Name { get; set; } public string Family { get; set; } [Required] public int Number { get; set; } } 例如,在编辑视图中,我有3个Editorfor()对象,我对过滤此页面的帖子数据很感兴趣,实际上我想忽略Number字段,只想发布Name和
public class MyModel {
[Required]
public string Name { get; set; }
public string Family { get; set; }
[Required]
public int Number { get; set; }
}
例如,在编辑视图中,我有3个
Editorfor()
对象,我对过滤此页面的帖子数据很感兴趣,实际上我想忽略Number
字段,只想发布Name
和Family
并且我还需要激活Number
的验证,一种方法是我从MyModel
中删除Number
属性,并手动在视图中定义,自己编写所有验证脚本,但我很有兴趣知道MVC中是否有更简单的方法。有人知道吗?视图中未填写的任何值都不会发布到控制器。但是,如果未填写[必需]
字段,则ViewModel.isValid
将为false。手动控制所有验证和模型绑定过于复杂且容易出错。您应该使用ViewModels
public class SomeSpecificViewModel
{
[Required]
public string Name { get; set; }
public string Family { get; set; }
}
public ActionResult SomeSpecificAction(SomeSpecificViewModel model)
{
//...
}
现在MVC将只验证姓名和族您为什么要忽略某些必需的内容?!如果您真的想忽略它,请不要在发布时使用该属性。+1-为每个视图使用单独的强类型ViewModels,否则您将面临潜在的安全漏洞和数据丢失问题。