【问题标题】:Iterate through the MultiSelectList遍历 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的博客跨度>

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


【解决方案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
{...}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-05
    • 2018-07-15
    • 2018-11-03
    相关资源
    最近更新 更多