1

DisplayForModel() を使用してモデル プロパティをグリッド形式で表示しています。

メタ データ プロパティの順序を定義する方法があるかどうかを知りたいだけです。

例:

現在の表示: Party、PartyRole、Id、Title FromDate、ThruDate

希望する表示: Title、Party、PartyRole、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>

grid.cshtml

@model IEnumerable<object>
<div class="grid">
@Html.DisplayForModel()

</div>
<div id="my-dialog"></div>

事前にどうもありがとう..

4

1 に答える 1