日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

ASP.NET MVC 最佳开发实践(1)

發布時間:2024/7/19 asp.net 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ASP.NET MVC 最佳开发实践(1) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本文提供了一些代碼設計準則,目標是幫助ASP.NET MVC 開發人員創建可靠的應用程序,當然,你可根據實際應用程序選擇合適的標準。本文由EntLib.com 小組翻譯,歡迎分享和交流ASP.NET MVC 項目開發設計思路。

?

Model建議 - Model Recommendations

Model是定義業務領域相關的對象,應該包含業務邏輯(對象如何動作和關聯),驗證邏輯(驗證對象的有效值),數據邏輯(數據對象如何持久化),和會話邏輯(跟蹤用戶狀態)。

?

創建獨立的Model項目,在ASP.NET MVC 項目中引用Model程序集。

?

將所有業務邏輯放置在Model中。

如將所有業務邏輯放置在Model項目中,可根據實際業務數據來生成ViewController。有如下好處:

  • 減少重復的業務邏輯。
  • View中減少業務邏輯,View易于理解。
  • 業務邏輯的測試僅僅和Model有關。

?

例如,下面需要顯示用戶的用戶名先顯示Last Name,在View中代碼如下:


<%?if?(String.Compare((string)TempData["displayLastNameFirst"],?"on")?==?0)
?????? {?
%>
??????? Welcome,?
<%=?Model.lastName%>,?<%=?Model.firstName%>
???
<%?}
??????
else
?????? {?
%>
??????? Welcome,?
<%=?Model.firstName%>?<%=?Model.lastName%>
???
<%?}?%>

?

然而你需要在每一個地方重復這一邏輯。如將這一業務邏輯放置在Model中,可在Model中添加一個屬性封裝這一邏輯。


public?string?combinedName
{
???
get
??? {
???????
return?(displayLastNameFirst???lastName?+?"?"?+?firstName?:?firstName?+?"?"?+?lastName);
??? }
???
private?set
??? {
??????? ;
??? }
}

這樣,可大大簡化視圖代碼:

<% Welcome, <%= Model.combinedName %> %>

?

將所有驗證邏輯放置在Model

所有輸入驗證應該在Model層,包括Client-side 驗證。

可使用ModelState 添加驗證檢查,代碼如下所示:

if (String.IsNullOrEmpty(userName))

{

?? ModelState.AddModelError("username", Resources.SignUp.UserNameError);

}?

?

不過,更好的辦法是使用 System.ComponentModel.DataAnnotations,在Model類的屬性上添加attribute,如下所示:

public class User

{

?? [Required(ErrorMessageResourceName = "nameRequired", ErrorMessageResourceType = typeof(Resources.User))]

?? public String userName { get; set; }

?????? ...

}

?

為數據訪問定義接口

接口用來暴露數據訪問類的方法,強化ASP.NET MVC 的松散耦合設計。

可考慮使用Entity Framework LINQ to SQL 創建對數據庫的訪問類,Entity Framework LINQ to SQL 都支持存儲過程。

?

將所有會話邏輯放置在Model中。

?

View 建議 - View Recommendations

View用來展示Model數據,Controller負責選擇View。業務邏輯不屬于ViewModel負責業務邏輯。View非常靈活,如ModelView可通過HTML顯示,同樣的Model也可通過XML 視圖來呈現。

?

HTML放置在ViewPartial View中(不要在Controller中)

默認的ASP.NET視圖引擎提供了如下視圖文件:HTML View.aspx),Partial HTML View.ascx)和Master page.master

如下視圖演示了對partial view的調用:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>

??? Below is a list of items submitted by <b>

<%= Html.Encode(ViewData["name"]) %></b>.

??? <p>

???

??? ...

??? <div id="items">

??????? <% Html.RenderPartial("ItemsByName");%>

??? </div>???

</asp:content>

?

Partial viewItemsByName.ascx)如下所示:

<%@ Control Language="C#"?%>

??????? <% foreach (Seller.Controllers.Items item in (IEnumerable)ViewData.Model)

?????????? { %>

??????????? <tr>

??????????????? <td>

??????????????????? <%= Html.Encode(item.title)%>

??????????????? </td>

??????????????? <td>

??????????????????? <%= Html.Encode(item.price)%>

??????????????? </td>??????????????

??????????? </tr>???????

??????? <% } %>

??????? </table>

????? <% } %>

Partial View 是一個強大的擴展和重用機制。你可在不同的地方包含相同的View,不必編寫重復的代碼。

?

View中使用ViewData訪問數據

ASP.NET 提供了如下機制在View模板中訪問數據:

ViewData.Model 對象Controlleraction方法中,在return語句中傳入一個Model對象(return View(myModelObject))。

ViewData Dictionary – action方法中存入數據(ViewData[“key”] = value),接著在View中方法相同的dictionary

在可能的情況下,應該是一ViewData Model,而不是ViewData 來訪問數據,因為Model 提供了類型安全。此外,你應在View模板中,使用數據訪問機制,而不是Request / Session 來訪問。

如需要顯示一個對象的多個屬性,可使用ViewData.Model,并創建一個強類型View。針對seller詳細頁面,seller類有namephoneaddressemail等等屬性,在呈現View之前,你可在Controller中對ViewData.Model 賦值seller對象實例。但是如果是一些零散的數據,如page#、用戶名和current time,則一般使用ViewData字典。

?

在使用模型綁定(Model bingding)時,避免在view中訪問數據。

Controller 中訪問數據庫,在執行View之前,將從數據庫中檢索的數據復制給輕量的View Model對象,這樣,輕量的View Model對象不必在視圖執行時檢索數據。

?

使用(自動生成)客戶端驗證

ASP.NET MVC 2 開始,可以很容易添加客戶端驗證。

(1) 如前所述,在Model層中添加數據驗證邏輯;

(2) 確保項目中Scripts目錄有如下javascript 文件:MicrosoftAjax.js MicrosoftMvcValidation.js

(3) 在表單提交頁面,添加如下代碼:

<script src="<%= Url.Content("~/Scripts/MicrosoftAjax.js") %>" type="text/javascript"></script>

?

<script src="<%= Url.Content("~/Scripts/MicrosoftMvcValidation.js") %>" type="text/javascript"></script>

?

(4) 在表單中添加如下代碼:

<% Html.EnableClientValidation(); %>

?

現在如果編輯表單內容,當輸入值不合格時,客戶端馬上進行驗證提醒。

?

在模板中插入server-side 注釋

View模板中使用服務端注釋,在HTML呈現時,會剔除。

如下是server-side注釋:

<%-- This is a server side template comment --%>

?

不要在View模板中使用HTML 注釋,因為這些注釋會呈現在web瀏覽器中,可被用戶看到。

?

使用HTMLHelper 擴展方法。

System.Web.Mvc.Html 類中包含了很多有用的HTML 擴展方法。

Form 表單生成(BeginForm

輸入字段生成(checkboxhiddenradio buttontextbox

鏈接URL生成(ActionLink

XSS保護(Encode

?

盡可能使用這些HTML擴展方法,如下是使用route table創建一個鏈接:

<%= Html.ActionLink(“Home page”, “Default”) %>


后續相關文章,可參考如下鏈接:

?

ASP.NET MVC 最佳開發實踐(2)
ASP.NET MVC 最佳開發實踐(3)

?

?

英文原文鏈接:
Best Practices for ASP.NET MVC
http://blogs.msdn.com/b/aspnetue/archive/2010/09/17/second_2d00_post.aspx

?

?

?

?

轉載于:https://www.cnblogs.com/rickie/archive/2011/05/03/2035877.html

總結

以上是生活随笔為你收集整理的ASP.NET MVC 最佳开发实践(1)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。