本文提供了一些代码设计准则,目标是帮助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 >创建一个链接:

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


后续相关文章,可参考如下链接:

 

 

 

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

 

 

 

 

相关文章:

  • 2021-08-14
  • 2021-06-29
  • 2022-02-07
  • 2021-11-04
  • 2022-01-03
  • 2021-11-06
  • 2021-11-25
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-09-30
  • 2021-06-14
  • 2021-10-05
  • 2021-09-27
  • 2022-01-20
相关资源
相似解决方案