C# 在MVC中使用视图模型,但保留对重叠攻击的保护

C# 在MVC中使用视图模型,但保留对重叠攻击的保护,c#,asp.net-mvc,asp.net-mvc-5,C#,Asp.net Mvc,Asp.net Mvc 5,我需要以相同的形式发布(并验证)两个模型,因此我创建了一个简单的“视图模型”,如建议的那样,它包含两个模型 这是可行的,但我无法使用Bind(Include=“property”)属性将post数据绑定到我的Entrant对象,从而防止过度定价 在下面的示例中,CodeWord已正确绑定(如您所料),但Entrant.Name未正确绑定 型号: public class EnterViewModel { [Required] public Entrant Entrant { ge

我需要以相同的形式发布(并验证)两个模型,因此我创建了一个简单的“视图模型”,如建议的那样,它包含两个模型

这是可行的,但我无法使用
Bind(Include=“property”)
属性将post数据绑定到我的
Entrant
对象,从而防止过度定价

在下面的示例中,
CodeWord
已正确绑定(如您所料),但
Entrant.Name
未正确绑定

型号:

public class EnterViewModel
{
    [Required]
    public Entrant Entrant { get; set; }

    [Required]
    public string CodeWord { get; set; }
}
控制器

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Index(
    [Bind(Include = "Entrant.Name,<etc.>,CodeWord")] EnterViewModel postedEntry)
{
  // Magic happens here
}
[HttpPost]
[ValidateAntiForgeryToken]
公共行动结果指数(
[Bind(Include=“Entrant.Name,,CodeWord”)]EnterViewModel-postedEntry)
{
//魔法在这里发生
}

当然,我可以通过在回发后创建一个新的
Entrant
实例来解决这个问题,并且只使用我想要的值,但是当MVC已经创建了我需要的所有对象时,这似乎效率低下。

您没有使用真正的视图模型。视图模型仅包含要显示/编辑的属性(即,它将包含视图模型中
Entrant
的每个属性(不是
Entrant
的实例)使用视图模型时,使用
Bind
属性应该永远都不是必需的。谢谢,这是有道理的,尽管它还远没有干涸-我必须复制我的
Entrant
模型的大部分内容,然后在控制器中手动映射属性。不过,这是我的问题的答案,所以如果你把你的评论变成答案,我一定会回答接受它!您没有使用真正的视图模型。视图模型只包含要显示/编辑的属性(即,它将包含视图模型中
Entrant
的每个属性(不是
Entrant
的实例)使用视图模型时,使用
Bind
属性应该永远都不是必需的。谢谢,这是有道理的,尽管它还远没有干涸-我必须复制我的
Entrant
模型的大部分内容,然后在控制器中手动映射属性。不过,这是我的问题的答案,所以如果你把你的评论变成答案,我一定会回答接受它!您没有使用真正的视图模型。视图模型只包含要显示/编辑的属性(即,它将包含视图模型中
Entrant
的每个属性(不是
Entrant
的实例)使用视图模型时,使用
Bind
属性应该永远都不是必需的。谢谢,这是有道理的,尽管它还远没有干涸-我必须复制我的
Entrant
模型的大部分内容,然后在控制器中手动映射属性。不过,这是我的问题的答案,所以如果你把你的评论变成答案,我一定会回答接受它!