4

在 MVC3 上,有没有办法装饰 ViewModel 属性以便DefaultModelBinder在请求中为其使用不同的名称?

例如,假设您有以下视图模型:

public class SomeModel 
{
  public string Direction {get;set;}
}

但是传入的参数是来自外部源(例如某些第三方组件)的Dir 。

我知道自定义模型绑定器可以处理这个问题,但我认为必须有一种方法来装饰属性,类似于动作参数可以Bind(Prefix="...")用来定义该映射的方式。

4

3 回答 3

3

您总是可以创建另一个属性:

public class SomeModel 
{
  public string Direction {get;set;}
  public string Dir
  {
    get { return this.Direction; }
    set { this.Direction = value; }
  }
}

我还要提一下,视图中使用的 ViewModel (cshtml/vbhtml) 不必与 Post 方法中使用的 ViewModel 相同。

于 2013-04-11T17:53:57.167 回答
2

好的,所以在对类似问题进行更多研究并在这里看到反馈之后,似乎我的问题的答案基本上是“”。

没有开箱即用的方式,因此必须使用自定义绑定器或重命名属性。

可以在此处找到具有更详细答案的类似问题:如何将 URL 参数绑定到具有不同名称的模型属性

于 2013-05-07T16:59:17.240 回答
0

我能够使用该FromForm属性在 ASP.NET MVC Core 中完成此操作。

public class DataTableOrder
{
    public int Column { get; set; }

    [FromForm(Name = "Dir")]
    public string Direction { get; set; }
}

文档:https ://docs.asp.net/en/latest/mvc/models/model-binding.html#customize-model-binding-behavior-with-attributes

但是,根据您是执行 GET 还是 POST,您可能想要使用[FromQuery]而不是[FromForm]我想。

于 2016-09-19T15:02:32.800 回答