簡體   English   中英

裝飾在ViewModel屬性上使用不同的名稱進行綁定

[英]Decoration on ViewModel property to use a different name for binding

在MVC3上,有沒有辦法裝飾ViewModel屬性以使DefaultModelBinder在請求中使用不同的名稱?

例如,假設您有以下視圖模型:

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

但是來自外部源(例如某些第三方組件)的Dir參數。

我知道自定義模型綁定器可以處理它,但我認為必須有一種方法來裝飾屬性,類似於動作參數可以使用Bind(Prefix="...")的方式來定義該映射。

您可以隨時創建另一個屬性:

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

我還要提到視圖中使用的ViewModel(cshtml / vbhtml)不必與Post方法中使用的ViewModel相同。

好的,所以經過更多的研究,看到類似的問題,並在這里看到反饋,似乎我的問題的答案基本上是“ ”。

沒有開箱即用的方式,因此必須使用自定義綁定器或者應重命名屬性。

可以在此處找到具有更詳細答案的類似問題: 如何將URL參數綁定到具有不同名稱的模型屬性

我能夠使用FromForm屬性在ASP.NET MVC Core中完成此FromForm

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]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM