Asp.net mvc 4 定义模型mvc4中特性的顺序
我们使用DisplayForModel()以网格格式显示模型属性 我只是想知道我们是否有办法定义元数据属性的顺序 例如: 当前显示:Party、PartyRole、Id、Title FromDate、ThruDate 所需显示:标题、政党、政党、FromDate、ThruDate、Id 有可能吗 显示模板-object.cshtmlAsp.net mvc 4 定义模型mvc4中特性的顺序,asp.net-mvc-4,Asp.net Mvc 4,我们使用DisplayForModel()以网格格式显示模型属性 我只是想知道我们是否有办法定义元数据属性的顺序 例如: 当前显示:Party、PartyRole、Id、Title FromDate、ThruDate 所需显示:标题、政党、政党、FromDate、ThruDate、Id 有可能吗 显示模板-object.cshtml @functions { bool ShouldShow(ModelMetadata metadata) { return metadata.ShowFor
@functions
{
bool ShouldShow(ModelMetadata metadata)
{
return metadata.ShowForDisplay
&& metadata.ModelType != typeof(System.Data.EntityState)
&& !metadata.IsComplexType
&& !ViewData.TemplateInfo.Visited(metadata);
}
}
<table>
<tr>
@if (TempData["header"] == null)
{
foreach (var property in ViewData.ModelMetadata.Properties.Where(pm => ShouldShow(pm)))
{
if (property.DisplayName != "Id")
{
<th>
@property.GetDisplayName()
</th>
}
}
TempData["header"] = "true";
}
</tr>
<tr>
@foreach (var prop in ViewData.ModelMetadata.Properties.Where(pm => ShouldShow(pm)))
{
if (prop.DisplayName == "Id")
{
<td>@Html.ActionLink("Edit", "Edit", new { id = @Html.Display(prop.PropertyName) }) </td>
}
else
{
<td>@Html.Display(prop.PropertyName)</td>
}
}
</tr>
</table>
@函数
{
bool ShouldShow(模型元数据)
{
return metadata.ShowForDisplay
&&metadata.ModelType!=typeof(System.Data.EntityState)
&&!metadata.IsComplexType
&&!ViewData.TemplateInfo.Visited(元数据);
}
}
@if(TempData[“header”]==null)
{
foreach(ViewData.ModelMetadata.Properties.Where(pm=>ShouldShow(pm))中的var属性)
{
如果(property.DisplayName!=“Id”)
{
@属性。GetDisplayName()
}
}
TempData[“header”]=“true”;
}
@foreach(ViewData.ModelMetadata.Properties.Where(pm=>ShouldShow(pm))中的var prop)
{
如果(prop.DisplayName==“Id”)
{
@ActionLink(“编辑”,“编辑”,新建{id=@Html.Display(prop.PropertyName)})
}
其他的
{
@Html.Display(prop.PropertyName)
}
}
grid.cshtml
@model IEnumerable<object>
<div class="grid">
@Html.DisplayForModel()
</div>
<div id="my-dialog"></div>
@model IEnumerable
@Html.DisplayForModel()
非常感谢。如果您使用默认的
数据注释模型元数据提供程序
,您可以在模型的属性上使用显示属性
的顺序
属性(),即(猜测您的ViewModel):
默认情况下,modelmatadata.Properties
按该属性值排序
请注意,在大多数情况下,这只有在模型中使用继承时才有意义,因为如果所有属性都在单个ViewModel类上定义,那么首先将它们按正确的顺序放在该类中就更简单了,即:
public class ViewModel
{
public string Title { get; set; }
public string Party { get; set; }
public SomeRole PartyRole { get; set; }
public DateTime FromDate { get; set; }
public DateTime ThruDate { get; set; }
public int Id { get; set; }
}
您是否使用默认的
数据注释模型元数据提供程序
?为什么不能在模型的属性上使用?默认情况下,属性
可枚举项按该属性值排序。(不是一个修辞性的问题-只是问,因为我不是100%确定我理解要求)。@JimmiTh,谢谢它起作用了:)我当时冒昧地把它提升为一个答案。:-)
public class ViewModel
{
public string Title { get; set; }
public string Party { get; set; }
public SomeRole PartyRole { get; set; }
public DateTime FromDate { get; set; }
public DateTime ThruDate { get; set; }
public int Id { get; set; }
}