在我的索引视图中,我有通常的编辑,详细信息和删除链接。我为他们制作了图标,因为我在任何地方都使用它们,所以我将它们放在部分视图中。
现在,我没有感觉我在这里做得最好。所以我的问题是:如何优化它,或者最佳实践应该有什么不同。
部分视图:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MVC2_NASTEST.Models.ButtonDetail>" %>
<%if (Model.edit) { %>
<a href='<%= Url.Action("Edit", Model.RouteValues) %>'>
<img src="<%= Url.Content("~/img/pencil.png") %>" alt="Edit" width="16" /></a>
<%} if (Model.details) { %>
<a href='<%= Url.Action("Details",Model.RouteValues) %>'>
<img src="<%= Url.Content("~/img/application_view_detail.png") %>" alt="Details" width="16" /></a>
<%} if (Model.delete) { %>
<a class="delbtn" href='<%= Url.Action("Delete",Model.RouteValues) %>'>
<img src="<%= Url.Content("~/img/cancel.png") %>" alt="Delete" width="16" /></a>
<%} %>
ViewModel:
using System;
namespace MVC2_NASTEST.Models {
public partial class ButtonDetail {
public object RouteValues { get; set; }
public bool edit { get; set; }
public bool details { get; set; }
public bool delete { get; set; }
}
}
可以或者应该将视图模型放在Models名称空间中吗?或者将它们放在不同的命名空间中?什么是最佳做法?
索引视图:
<% foreach (var item in Model) { %>
<tr>
<td>
<% Html.RenderPartial("buttons", new MVC2_NASTEST.Models.ButtonDetail() { RouteValues = new { id = item.hlpb_ID, test = item.hlpb_Ontvanger }, edit = true, details = true, delete = true }); %>
</td>
<td>
<%: item.hlpb_Titel %>
</td>
<td>
<%: item.hlpb_Schooljaar %>
</td>
<td>
...
</td>
</tr>
<% } %>
特别是索引视图中的部分看起来并不是我眼中的最佳实践。
答案 0 :(得分:2)
viewmodel可以或应该在Models名称空间中吗?
要将它们与模型分开,您可以将它们放在ViewModels命名空间中。就索引视图而言,您可以使用Editor/Display templates。
答案 1 :(得分:2)
我觉得这部分对你没有帮助。
<a href='<%= Url.Action("Edit") %>'>
<img src="<%= Url.Content("~/img/pencil.png") %>" alt="Edit" width="16" /></a>
不是那么糟糕
<% Html.RenderPartial("buttonEdit"); %>
即使您发现所有按钮都应该共享相同的样式,我也会在这里使用css。
作为旁注,不要使用get来执行删除操作。搜索抓取工具可能会在扫描您的网站时删除所有条目。即使它是一个内部网站也不是一个好主意。使用帖子。