迭代MultiSelectList

时间:2014-01-06 05:10:41

标签: c# asp.net-mvc asp.net-mvc-3 model-view-controller

我有一个这样的模型:

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.how中显示它我可以遍历文章以在DisplayFor中显示吗?

1 个答案:

答案 0 :(得分:0)

在项目的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
{...}