【发布时间】:2013-12-18 16:07:51
【问题描述】:
使用 Visual Studio 设置的默认 MVC 项目,我有一个 _ViewStart.cshtml 文件,它设置了一个共享的“主”视图。
我目前正在处理以下断言;只要有可能,您应该使用强类型视图,因为这样感觉更干净。 (如有错误请指正)
我正在考虑让我的共享“主”视图接受 PageModel,其中可能包含 PageTitle、User、Locality 等内容。
我的所有数据模型是否都应该从PageModel 继承,以便“主”视图和不同的页面视图可以处理不同类型的模型?我只是想了解 MVC 最佳实践。
模型
public class PageModel {
public string Title { get; set; }
}
public class DataModel : PageModel {
public int ID { get; set; }
public DateTime Timestamp { get; set; }
}
_Layout.cshtml
@model Namespace.Models.PageModel
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>@Model.Title - Website Name</title>
<!-- etc etc -->
Index.cshtml
@model Namespace.Models.DataModel
编辑
假设上述方法是合理的,当“主”视图仍期待单个模型时,您将如何处理应该接受项目列表的视图?
_Layout.cshtml
@model Namespace.Models.PageModel
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>@Model.Title - Website Name</title>
<!-- etc etc -->
Index.cshtml
@model IEnumerable<Namespace.Models.DataModel>
<table>
<tr>
<th>
@Html.DisplayNameFor(model => model.ID)
</th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.ID)
</td>
</tr>
}
</table>
【问题讨论】:
-
您的模型是否来自数据库?
-
我读过一些关于包装数据库模型而不是直接使用它们的文章
标签: c# asp.net-mvc