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,否则您将面临潜在的安全漏洞和数据丢失问题。