Asp.net mvc 4 定义模型mvc4中特性的顺序

Asp.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

我们使用DisplayForModel()以网格格式显示模型属性

我只是想知道我们是否有办法定义元数据属性的顺序

例如:

当前显示:Party、PartyRole、Id、Title FromDate、ThruDate

所需显示:标题、政党、政党、FromDate、ThruDate、Id

有可能吗

显示模板-object.cshtml

@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; }
}