有没有办法将编辑器和显示模板与 Dictionary一起使用?在 ASP.NET MVC3 中?

发布于 2024-11-09 09:53:55 字数 344 浏览 5 评论 0原文

当我的模型(或子模型)是 List 对象时,我通常会使用 EditorDisplay 模板。这样我就可以避免使用多个 foreach 结构“破坏”我的代码。

我想知道当模型是 Dictionary 对象时是否有办法使用 EditorDisplay 模板。

谢谢

弗朗西斯科

PS:更赞赏 Razor 的答案

I usually make use of the Editor and Display templates when my model (or submodels) are List<T> objects. This way I avoid to "spoil" my code with several foreach constructs.

I wanted to know whether there is any way to use Editor and Display templates when the model is a Dictionary<K,V> object instead.

Thanks

Francesco

PS: answers with Razor are more appreciated

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

残月升风 2024-11-16 09:53:55

编辑器/显示模板不能与 Dictionary 很好地配合使用。就我个人而言,我避免使用这种类型,尤其是与 EditorTemplates 一起使用,因为为模型生成正确的字段名称粘合剂可以是 PITA。

我建议您定义一个自定义视图模型:

public class Item
{
    public string Key { get; set; }
    public string Value { get; set; }
}

然后在您定义编辑器/显示模板的视图模型上有一个 IEnumerable 属性。这将使您的生活变得更加轻松。然后剩下的就是在模型属性(可能是 Dictionary)之间映射到视图模型属性。

Editor/Display templates don't work well with Dictionary<TKey, TValue>. Personally I avoid using this type as such especially with EditorTemplates as producing correct field names for the model binder could be a PITA.

I would recommend you defining a custom view model:

public class Item
{
    public string Key { get; set; }
    public string Value { get; set; }
}

and then have a IEnumerable<Item> property on your view model for which you define Editor/Display templates. It will make your life much easier. Then all that's left would be to map between your model property (which potentially could be a Dictionary<TKey, TValue>) to the view model property.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文