【问题标题】:Passing model data to asp.net mvc EditorTemplates将模型数据传递给 asp.net mvc EditorTemplates
【发布时间】:2023-04-05 23:54:02
【问题描述】:

ScottGu 在这篇帖子link text 中展示了如何将EditorTemplates 用于诸如Country DropDownList 之类的事情。我的问题是如何将国家的动态列表传递给 EditorTemplate?

【问题讨论】:

    标签: asp.net-mvc editortemplates


    【解决方案1】:

    最好将局部视图设为强类型并将模型传递给 EditorFor 帮助器

    @Html.EditorFor(m=>m.SelectedCountry, Model.AvailableCountries)
    

    【讨论】:

    • 有没有办法让 EditorForModel() 为子元素解决这个问题?
    【解决方案2】:

    可能最优雅的解决方案是使用自定义属性,您以后可以使用以下方法访问模型元数据:ViewData.ModelMetadata。

    例如:

     [Foreign(Type="DropDown", TableName="Countries")]
       public int IdCountry { get; set; }
    

    ForeignAttribute 是一个你必须声明的类,然后用它来构建你的编辑器模板。

    【讨论】:

      【解决方案3】:

      如果经常需要数据,您可以在 ViewData 中传递它并从 ActionFilter 提供 ViewData(尽管可以说它是 anti-pattern)。

      【讨论】:

        【解决方案4】:

        类似于@Benja 的回答

        您也可以以类似的方式使用 [AdditionaMetaData(key,value)] 属性,而无需定义自己的属性。键和值必须是字符串。

        可以在视图中检索额外的数据:@ViewData.ModelMetadata.AdditionalValues["DropDownData"]

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-02-18
          • 1970-01-01
          • 2020-01-09
          • 2011-05-08
          • 1970-01-01
          • 2012-02-02
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多