天天看點

Asp.net Mvc Codeplex Preview 5 第一篇 Helper的新特性

Asp.net Mvc Codeplex Preview 5是Asp.net Mvc的一個過渡版本,它包含了一些新特性。

Pv5對于Helper的更改基本集中在HtmlHelper。對于簡單的使用,我基本一帶而過,如果朋友們有什麼不明白,可以留言。

AttributeEncode提供了HtmlAttributeEncode功能

使用方法

<%=Html.AttributeEncode("<script src=\"j.js\"></script><div background='javascript:alert('');'/>") %>

編碼結果

<script src="j.js"></script><div background='javascript:alert('');'/>

方法僅将引号 (")、“and”符号 (&) 和左尖括号 (<) 轉換為等效的字元實體。該方法比Encode/HtmlEncode方法快得多。

Encode 提供了HTMLENCODE功能

<%=Html.Encode("<script src=\"j.js\"></script><div background='javascript:alert('');'/>")%>

<script src="j.js"></script><div background='javascript:alert('');'/>

RenderUserControl 改為 RenderPartial,并提供了更好的模闆尋找方式

<%=Html.RenderUserControl("/Views/Shared/Menu.ascx") %>

改為

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

注意,原來的<%=%>改了為一句語言,有分号結束,與RenderAction統一了

驗證控件

 起到了伺服器端驗證作用,

效果如下:

Asp.net Mvc Codeplex Preview 5 第一篇 Helper的新特性

使用方法如下:

Model:

    public class MyModel

    {

        public int ID { get; set; }

        public string Name { get; set; }

    }

View:

     <h3>驗證控件 </h3>

    <%using (Html.Form("home", "save", FormMethod.Post)) {%>

    <%=Html.TextBox("ID")%>

    <%=Html.ValidationMessage("ID",new {style="color:green"})%>

    <%=Html.TextBox("Name")%>

    <%=Html.ValidationMessage("Name")%>

    <%=Html.SubmitButton() %>

    <%

        }%>

    <div style="color: Red">

        <%=Html.ValidationSummary() %>

    </div>

 Controller:

public class HomeController : Controller {

        public ActionResult Index() {//顯示表單的頁

            ViewData["Title"] = "Home Page";

            ViewData["Message"] = "Welcome to ASP.NET MVC!";

            return View();

        }

        [AcceptVerbs("POST")]

        public ActionResult Save(int? ID, string Name)

        {//處理表單的頁

            if(ID==null)

            ViewData.ModelState.AddModelError("ID", ID.ToString(), "ID是必添項!");

            if (string.IsNullOrEmpty(Name))

                ViewData.ModelState.AddModelError("Name", Name, "Name是必添項!");

            if (ViewData.ModelState.IsValid)//驗證成功後做的操作

                return RedirectToAction("Index");

            return View("Index");//else

        public ActionResult About() {

 這就是PV5為我們提供了簡單的驗證功能了。

這是一個驗證送出頁的東西,類似ViewState

先在送出頁的表單中寫

<%=Html.AntiForgeryToken() %>

 生成一個類似

 <input name="__MVC_AntiForgeryToken" type="hidden" value="FaSCzN4P+6Hg977mdOX4z9pCKOy4vlP6whi0RGD+2L9mbTNGGx4GmN36sE4klJZf" />

 的隐藏字段。

 拿剛才的Action為例:

        [ValidateAntiForgeryToken]

要 <%=Html.DropDownList("請選擇","CityID", new { @class = "select" })%>

如果不需要預設項留白字元串即可

繼續閱讀