0

我有不同的模型类型,它们是抽象模型的子类。我以这种方式渲染它:

<ul>
    @foreach(dynamic model in @Model.ModelList)
    {
        <li>
            @Display(model)
        </li>
    }
</ul>

如何为每种类型定义“显示”(我希望每种模型类型有不同的 cshtml)?我认为它与形状有关。如何为每种类型定义一个形状和视图?这是正确的方法吗?

4

1 回答 1

0

我已经找到了解决方案(这并不容易,因为如果它是关于果园的,我完全是新手)创建新形状:

    public void Discover(ShapeTableBuilder builder)
    {
        builder.Describe("MyModel").OnDisplaying(
            displaying =>
                {
                    var elementObject = displaying.Shape;
                    var elementId = elementObject.Id;
                    elementObject.Metadata.Alternates.Add("MyModel__" + EncodeAlternateElement(elementId));
                });
    }

    private string EncodeAlternateElement(string alternateElement)
    {
        return alternateElement.Replace("-", "__").Replace(".", "_");
    }

在视图中使用它:

<ul>
@foreach (var model in @Model)
{
    <li>

        @Display(@New.MyModel(Id: model.Id, modelInstance: model))

    </li>
}
</ul>
于 2013-04-17T11:17:05.933 回答