0

我有一个包含 4 列(HTML div)的视图。每个都包含相同数据的不同子集,基于我的 Place 模型(我只是输出 name 属性,还有一个 category 属性 - 两个字符串)。

我可以创建一个 ViewModel,其中包含 4 个地点模型,每个模型都包含适当的数据。

我可以传入 4 个带有标记的字符串(可能不如将标记与数据混合?)。

这里的最佳做法是什么?

(我还需要按字母顺序按类别输出位置 - 在类别更改时输出标题 - 尽管这是次要要求)。

4

1 回答 1

1

您可能应该使用第一个选项,即包含 4 PlaceViewModels 的 ViewModel。它将为您提供操作对象及其属性的灵活性,并根据需要显示它们;从长远来看,它还将改善视图的维护,

@model PlacesViewModel

@foreach (var place in Model.Places)
{
    // Render your HTML column here 
}

通过传递一组 HTML 字符串(如第二个选项中所述),您将无法以任何有用的方式修改、检查、解析、迭代或操作您的对象。您将不得不使用某种客户端框架(如 jQuery)来操作字符串。

但是,如果您只是想遍历一组PlaceViewModel,您可以考虑传递它们的列表,并在您的操作中View执行类似的操作,

@model List<PlaceViewModel>

@foreach (var place in Model)
{
    // Render your HTML column here
}

这将节省额外上课的需要。

要按名称(或任何其他属性)按字母顺序排列模型,请执行以下操作:

@foreach (var place in Model.Places.OrderBy(place => place.Name))
{
    // Render your HTML column here 
}
于 2013-06-03T13:49:43.180 回答