1.  自MVC框架升级到3版本以后,Razor 引擎占主流。Razor的简单语法如下:

    @变量

    @对象.属性

    @{   //代码段  }

    @{   @:代码段中的文本  }

    @{    <text>代码段中有大量的文本</text>}

    @if() {  //代码段  }

 如果想向视图中加入一些动态的内容,可以有以下几种方法,a ,inline code ; b , HTML helper ; c , Partial View  。接下来我们单独讨论每一种方法。

2. inline code

    2.1 在View中引入命名空间:  @using Project.Models ,这种方法可以将这个命名空间引入到这个单独的View中,如果要想在每一个View中都引入同一个命名空间,可以在Views文件夹下的Web.config (注意,不是更目录下的)文件中修改配置,如下:    

<system.web.webPages.razor>

    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral,            

 PublicKeyToken=31BF3856AD364E35" />

    <pages pageBaseType="System.Web.Mvc.WebViewPage">

      <namespaces>

        <add namespace="System.Web.Mvc" />

        <add namespace="System.Web.Mvc.Ajax" />

        <add namespace="System.Web.Mvc.Html" />

        <add namespace="System.Web.Routing" />

        <add namespace="Project.Models"

      </namespaces>

    </pages>

  </system.web.webPages.razor> 

 

    2.2   理解 Razor HTML String 编码

        假设有一个类

 public class ClassA

        {

            public string MyMethod()

            {

                return "<form> This is a form ! </form>";

            }

        } 

 

           如果页面中引用了 @classA.MyMethod()的话,那么,这个方法的返回值在View中将会被自动编码成"&lt;form&gt; This is a form ! &lt;form&gt; "。MVC框架之所以这么做,是为了保证页面的安全性。不过,如果程序员确实像让这个方法返回一个form表单的话,MVC框架也是可以做到的,可以这样写:return new MvcHtmlString("<form> This is a form ! </form>") ;

3. 使用 HTML Helper

    3.1 创建一个 Inline HTML helper 方法

@{

        ViewBag.Title = "Index";

    }

     @helper CreateList(string[] items)

        {

    <ul>

        @foreach(string item in items)

        {

            <li> @item </li>

        }

    </ul>

    }

          

        <p>Fruits i Like :</p>

        @*在下面调用*@

        @CreateList(new string[]{"苹果","柚子","草莓","火龙果"}) 

    3.2 创建一个External HTML helper 方法

    如果创建一个行内的 HTML helper的话,只能在一个特定的页面使用该方法,如果想创建能用于任何页面的 HTML helper 方法的话,可以写一个扩展方法 ,第一个参数必须是 HtmlHelper ,返回值是MvcHtmlString。如下所示

         

 public static class HelperClass

    {

        public static MvcHtmlString List(this HtmlHelper helper, string[] listItems)

        {

            TagBuilder ulTag = new TagBuilder("ul");

            foreach (string item in listItems)

            {

                TagBuilder liTag = new TagBuilder("li");

                liTag.SetInnerText(item);

                ulTag.InnerHtml += liTag.ToString();

            }

            return new MvcHtmlString(ulTag.ToString());

        }

    }    

          @*在下面调用*@

          @*先引入HelperClass所在的命名空间*@     

 @using MvcArea1.Models    

@{

    ViewBag.Title = "Index";

}

@Html.List(new string[]{"苹果","柚子","草莓","火龙果"})  

       

3.3 使用MVC框架内置的HTML Helper 方法

            a , 创建Form 

         

 @using (@Html.BeginForm())
{
}

 

            b, 创建 input Helper

                

 

                还有一个比较有意思的地方,如果我在Controller中设置  ViewBag.Message = "Hello , world !"  ,然后在页面中输入 @Html.TextBox("Message") ,那么,会生成如下的HTML代码:

                <input id="Message" name="Message" type="text" value="Hello , world !" /></form>

                MVC框架会查找 ViewBag.Message , ViewData["Message"] , @Model.Message ,如果找到存在Message属性的值,就会赋给这个文本框的Value属性

 

        c ,使用强类型的 Input Helper 。

            

              

        d, 使用列表 Helper

            

 

            e , 使用 URL 或超链接

                

          

4. 使用Section

    section 就是一块HTML代码段,在一个View里面定义,在 Layout 页面引用。如:

      

        首先,在View页面里面引用    

@{

    ViewBag.Title = "Index";

}

<h2>Index</h2>

@section Footer{

    <h4>It's footer here !</h4>

}

然后在 Layout 页面里引用

<!DOCTYPE html>

<html>

<head>

    <title>@ViewBag.Title</title>

    <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />

    <script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script>

</head>

 

<body>

    @RenderBody()

 

          @RenderSection("Footer")

</body>

</html>

 

  

5. 使用 PartialPage 

    选中 Views 目录的某一类视图的文件夹,右键选中 添加 => 视图 在弹出的页面中,选中 "创建为"分部视图。

        

    在新增的页面中添加需要的HTML元素,然后在其他的页面中引用,引用方式如下:

        @Html.Partial("MyPartial")

    Partial View 也可以创建为强类型的 ,具体操作这里就不赘述了,方式跟创建强类型的页面一样,引用的时候,@Html.Partial 有针对强类型的重载版本。