2010-09-22 118 views
0

在我的索引視圖中,我有通常的編輯,詳細信息和刪除鏈接。我已經爲它們製作了圖標,並且由於我將它們全部用到了部分視圖中。使用不同模型的ASP.NET MVC局部視圖

現在,我沒有感覺我在這裏做最好的練習。所以我的問題是:如何優化它,或者最佳實踐應該有什麼不同。

局部視圖:

<%@ 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> 
<%} %> 

視圖模型:

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; } 
    } 
} 

能夠或應該的ViewModels是在型號命名空間?或將它們放置在不同的命名空間中?這裏最好的做法是什麼?

Index視圖:

<% 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> 
    <% } %> 

尤其是在索引視圖不看最好的做法在我眼中的一部分。

回答

2

我覺得這部分對你沒有幫助。

<a href='<%= Url.Action("Edit") %>'> 
    <img src="<%= Url.Content("~/img/pencil.png") %>" alt="Edit" width="16" /></a> 

這不就是再厲害

<% Html.RenderPartial("buttonEdit"); %> 

即使你發現所有的按鈕應該共享相同的風格,我只想用CSS這裏。

作爲一個方面說明不要使用獲取刪除操作。搜索爬蟲可能會在掃描您的網站時刪除所有條目。即使它是一個內部網站,它也不是一個好主意。使用帖子。

+0

誰是我使用get? :)刪除通過jQuery確認模式和'$ .post',所以不用擔心。那麼你在暗示什麼?使3個單獨的部分?使用這個部分的目標是讓我的代碼變幹。所以你說這個圖像應該只是CSS?並忘記部分? – Stefanvds 2010-09-22 10:58:56

2

可以或應該將viewmodels放在Models命名空間中嗎?

要將它們與模型分開,可以將它們放置在ViewModels名稱空間中。就索引視圖而言,您可以使用Editor/Display templates

+0

您是否建議我放棄部分視圖,或者只是編寫一個模板,以便在索引視圖中替換此代碼。我即時生成我的模型,因此在這種情況下代碼實際上是相同的。 – Stefanvds 2010-09-22 09:35:35