这适用于抓取标题(NOT VALUES):
@model IEnumerable<SomeModel>
...
<th>@Html.DisplayNameFor(m => m.SomeModelProperty)</th>
Run Code Online (Sandbox Code Playgroud)
如果SomeModelProperty是:
[Display(Name = "An Excellent Header")]
SomeModelProperty { get; set; }
Run Code Online (Sandbox Code Playgroud)
然后它会在标题th元素中显示"An Excellent Header" .
你会认为这不会起作用,因为模型是IEnumerable,它没有m.SomeModelProperty,但是它起作用,因为HtmlHelper有一个HtmlHelper<IEnumerable<TModel>>lambda的参数TModel不是IEnumerable<TModel>.由于这仅使用元数据,因此不需要集合中的项目.(虽然intellisense m.会欺骗你,让你认为它是一个集合).我不确定何时添加了这个很酷的重载,但是对于Index.cshtml来说非常方便,并且消除了@Html.DisplayNameFor(m => @Model.FirstOrDefault().SomeModelProperty)我想要避免的时髦事物.
http://msdn.microsoft.com/en-us/library/hh833697(v=vs.108).aspx
但是,当我的模型不是IEnumerable时,我无法弄清楚如何让它工作,而是包含IEnumerable作为属性,例如:
public class SomeList
{
public List<SomeModel> SomeModels { get; set; }
public int Page { get; set; }
public DateTime CurrentAsOf { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我希望明确使用泛型类型参数,但我认为类型参数是由从页面创建的HtmlHelper中逐渐减少的引擎指定的.我可以在页面中声明一个新的HtmlHelper,还是以某种方式明确指定类型参数?
Index.cshtml:
@model SomeList
//No idea how to do this:
@Html.DisplayNameFor<IEnumerable<SomeModel>>(m => …Run Code Online (Sandbox Code Playgroud) 我不知道为什么PageCount,PageNumber和PageListPager不包含定义或无法找到.它问我是否缺少using指令或汇编引用,但我在我的用户控制器中有它.
Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber) of @Model.PageCount
to
@Html.PagedListPager( Model, page => Url.Action("Index", new { page, sortOrder = ViewBag.CurrentSort, currentFilter=ViewBag.CurrentFilter }) )
Run Code Online (Sandbox Code Playgroud)
注意:以下图像和代码仅供参考
控制器\ UserController.cs
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using RecreationalServicesTicketingSystem.Models;
using RecreationalServicesTicketingSystem.DAL;
using PagedList;
namespace RecreationalServicesTicketingSystem.Controllers
{
public class UserController : Controller
{
private IssueContext db = new IssueContext();
//
// GET: /User/
public ViewResult Index(string sortOrder, string currentFilter, string searchString, int? page)
{
ViewBag.CurrentSort …Run Code Online (Sandbox Code Playgroud)