遍历 MultiSelectList
Posted
技术标签:
【中文标题】遍历 MultiSelectList【英文标题】:Iterate through the MultiSelectList 【发布时间】:2014-01-23 11:11:53 【问题描述】:我有一个这样的模型:
public class ArticleWriter_ViewModel
public int MagId get; set;
public string MagNo get; set;
public string TitleIds get; set;
public MultiSelectList Articles get; set;
public int[] SelectedArticles get; set;
我这样填写文章:
ArticleWriter_ViewModel viewModel = new ArticleWriter_ViewModel();
Func<IQueryable<NumberTitle>, IOrderedQueryable<NumberTitle>> orderByFunc = null;
Expression<Func<NumberTitle, bool>> filterExpr = null;
if (id > 0)
filterExpr = p => p.MagazineId.Equals(id);
var wholeTitles = unitOfWork.NumberTitleRepository.Get(filterExpr, orderByFunc, "Magazine,Title").ToList();
然后将其传递给查看。在一些视图中,我在 DropDownListFor 中显示文章,但在其他视图中,我想在 DisplayFor 中显示它。如何遍历文章以在 DisplayFor 中显示?
【问题讨论】:
hanselman.com/blog/…也许你需要一个展示模板 能否请您提供更多有关它的信息? 如果要使用html.DisplayFor(x=>x.PropertyName),属性是复杂类型,添加属性[UIHit]并创建显示模板,看hanselman的博客跨度> 【参考方案1】:在项目的Views\DisplayTemplates
目录(如有必要,创建文件夹)中创建一个名为 ArticleWriter_ViewModel.cshtml 的显示模板,如下所示(Razor 语法):
@model ArticleWriter_ViewModel
@foreach (NumberTitle article in Model)
@Html.DisplayFor(article => article.Title)
您可以根据需要更改 DisplayFor 表达式中引用的属性和/或添加表达式以过滤文章列表。
如果你想给显示模板一个不同的名字,使用模型名称上的 UIHint 注解来分配模板名称:
[UIHint("MyTemplate")]
public class ArticleWriter_ViewModel
...
【讨论】:
以上是关于遍历 MultiSelectList的主要内容,如果未能解决你的问题,请参考以下文章