【问题标题】:How to bind form fields to model properties with different names?如何将表单字段绑定到具有不同名称的模型属性?
【发布时间】:2023-03-26 07:35:01
【问题描述】:

我有一个搜索表单,我想使用简短的查询字符串参数(例如 ?q=value&s=whatever&c=blah),我想使用 MVC 模型绑定将这些参数放入我的控制器操作中。

我可以创建一个反映这些短名称的类型,但我宁愿有一个具有更合理名称的类型(例如 q = Query、s = SortOrder、c = Cheese)。有没有一种很好的简单方法可以做到这一点,例如我的模型上的属性?

我知道我可以为此编写一个新的模型绑定器,但这感觉有点矫枉过正——我没有做任何复杂的事情,只是使用不同的名称)——而且突然不得不如此明确地表达感觉是错误的。

由于模型绑定基础结构使用 TypeDescriptors,我想我可以在我的模型上指定一个自定义类型描述符,它返回具有不同名称的属性,可能来自模型本身的属性 - 至少这是可用的。

无论如何,我希望有人已经这样做了?

【问题讨论】:

    标签: asp.net-mvc binding model


    【解决方案1】:

    编写自己的模型活页夹有点矫枉过正,但这是这样做的方法。 MVC 中的绑定使用反射,因此您需要 1:1 匹配。

    另一种方法是编写一个小类,其中包含您希望它们看起来的字段,然后将视图绑定到该类。

    然后在您的控制器中,您可以通过常规绑定方式获取这些值,然后将那些(漂亮)外观的字段转移到您拥有的其他模型中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-19
      • 1970-01-01
      • 2011-01-13
      • 2016-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多