遍历 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的主要内容,如果未能解决你的问题,请参考以下文章

二叉树遍历规则,先顺遍历/中序遍历/后序遍历

前序遍历 中序遍历 后序遍历

前序遍历and中序遍历and后序遍历

中序遍历、前序遍历和后序遍历

根据二叉树遍历结果重构二叉树(前序遍历+中序遍历 / 中序遍历+后序遍历 / LeetCode真题)

根据二叉树遍历结果重构二叉树(前序遍历+中序遍历 / 中序遍历+后序遍历 / LeetCode真题)