gpt4 book ai didi

c# - ASP.NET MVC 3 显示模板问题

转载 作者:行者123 更新时间:2023-11-30 19:48:34 26 4
gpt4 key购买 nike

首先我在 Views > Blog > DisplayTemplates 中有一个显示模板:

@model Domain.Model.BlogPost
<div class="blogSummary">
@Html.ActionLink(Model.Title, "post", new { Id = Model.PostID }, new { @class = "titleLink" })
<div class="subInfo">
Posted by @Model.Author on @Model.PostedDate.ToString("D") | @Model.PostComments.Count
Comment(s)</div>
<br />
<div class="summaryText">
@Html.Markdown(Model.Body.Length > 300 ? Model.Body.Remove(0, 300) + "..." : Model.Body)
@Html.ActionLink("(view more)", "post", new { Id = Model.PostID })
</div>
</div>

然后我有一个观点:

@model IEnumerable<Domain.Model.BlogPost>
@{
ViewBag.Title = "Index";
}
@Html.DisplayFor(x => x, "BlogPostSummary")

但是,我在 DisplayFor() 上遇到错误:

The model item passed into the dictionary is of type 'System.Data.Objects.ObjectSet`1[Domain.Model.BlogPost]', but this dictionary requires a model item of type 'Domain.Model.BlogPost'.

我不太理解发生了什么。使用显示模板的最佳方式是什么?

最佳答案

问题是当预期只有一个 BlogPost 时,您正试图传递 BlogPost 的集合。

尝试:

@Html.DisplayFor(x => x[0], "BlogPostSummary")

或者类似的东西:

@foreach (var post in Model)
@Html.Display(post)

注意:我不确定第二个示例是否正确使用了 Html.Display。我怀疑代码使用部分而不是显示模板会更好。

用户界面提示

默认情况下,ASP.NET MVC 依靠命名约定将 BlogPost 类链接到 BlogPost.cshtml 显示模板。但是,如果您想使用 CustomBlogPost.cshtml 作为您的显示模板,您可以通过应用 UIHint 属性来实现。

public class DomainModel {
[UIHint("CustomBlogPost")]
public BlogPost Post { get; set; }
}

关于c# - ASP.NET MVC 3 显示模板问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5330826/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com