1. 程式人生 > >Asp.net Mvc Codeplex Preview 5 第一篇 Helper的新特性

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

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

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

AttributeEncode提供了HtmlAttributeEncode功能

使用方法
<%=Html.AttributeEncode("<script src=\"j.js\"></script><div background='javascript:alert('');'/>"%>
編碼結果
&lt;script src=&quot;j.js&quot;>&lt;/script>&lt;div background='javascript:alert('');'/>

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

Encode 提供了HTMLENCODE功能

使用方法
<%=Html.Encode("<script src=\"j.js\"></script><div background='javascript:alert('');'/>
")%>
編碼結果
&lt;script src=&quot;j.js&quot;&gt;&lt;/script&gt;&lt;div background='javascript:alert('');'/&gt;

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

<%=Html.RenderUserControl("/Views/Shared/Menu.ascx"%>
改為
<% Html.RenderPartial("Menu");%>

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

驗證控制元件

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

效果如下:

 

使用方法如下:

Model:

publicclass MyModel
    {
        
publicint ID { getset; }
        
publicstring Name { getset; }
    }

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:

publicclass 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() {
            
return View();
        }
    }

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

AntiForgeryToken

這是一個驗證提交頁的東西,類似ViewState

先在提交頁的表單中寫

<%=Html.AntiForgeryToken() %>

 生成一個類似

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

 的隱藏欄位。

 拿剛才的Action為例:

        [ValidateAntiForgeryToken]
        
public ActionResult Save(int? ID, string Name)
       

 DropDownList新加了預設項

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

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