2011-12-08 18 views
0

道歉,如果这是我失去了一些简单的东西,但在这里它是无论如何。如果这更容易,我很乐意指出文章的方向等。MVC3查找列表html帮手

是否有一个帮助器会显示给定ID的列表中的值。

我要找的是能够做这样的事情在剃刀如下:

@Html.LookedUpValueFor(model => model.id, Lists.SelectList1) 

在上面的例子中,我期望Lists.SelectList1是一个静态的SelectList哪里有SelectList的“值”列中的“id”。

目标是让它显示“名称”而不是“ID”。我敢肯定,我可以手动执行此操作,但我认为MVC应该有一些方法可以轻松实现我的目标。

理想情况下,我希望将我创建的ViewModel中的成员归因于说它是“LookupList”是一件特别的事情。

[LookupList(Lists.SelectList1, "id")] 

甚至更​​好

[LookupList(Lists.StandardList, "id")] 

其中 “ID” 是对构成列表中的类成员。

如果没有,是否有一些其他推荐的方法来实现此功能。

回答

1

因此,我认为你只是想显示名称而不是下拉列表?

如果是这种情况,那么你或许应该使用自定义DisplayTemplate,所以你会打电话:

@Html.DisplayFor(model => model.id, "LookupList") 

其中“LookupList”是显示模板的子文件夹,名为DisplayTemplates定义的名称(一个MVC命名约定)。

这显示模板看起来是这样的:

@model int 
@using System.Linq 

@Lists.SelectList1.Single(s => s.Value == Model.ToString()).Text 

你的观点不应该有这样的逻辑,虽然所以这也许应该是在一个单独的HTML辅助你的建议

+0

也做到了,但在其他人不知道...... DisplayTemplates需要进入“Views \ Shared”或“Views \ ”。相当整洁和可重用的解决方案。甚至允许[UIHint(“LookupList”)]作为装饰...勾选所有框! – Martin