ASP.NET MVC HtmlHelper

來源:互聯網
上載者:User

,ASP.NET MVC提供了一個HtmlHelper用於產生有資料繫結的Html標籤。

1.ActionLink
其中最常用的就是Html.ActionLink

(1).ActionLink(string linkText, string actionName)

//頁面顯示linkText指向Global.asax.cs中預設的Controller對象的actionName方法

(2).ActionLink(string linkText, string actionName, string controllerName)

//頁面顯示linkText指向controllerName對應的Controller的actionName方法

(3).ActionLink(string linkText,string actionName,object routues,object htmlAttributes)

//頁面顯示linkText指向Global.asax.cs中預設的Controller對象的actionName方法,並且傳遞參數給action方法(以匿名型別的成對的名稱和數值的方式來實現),並設定頁面連結的屬性htmlAttributes。

1.1基本的使用方式
在UrlRouting規則為預設規則的情況下,它產生的HTML代碼為

1: <a href="/">這是一個串連</a>

ActionLink中的三個參數分別為

顯示的文字
Action
Controller
其中Controller可以省略,省略時指向同一Controller下的Action。

1.2ActionLink中QueryString與Html屬性設定
1: 帶有QueryString的寫法
2: <%=Html.ActionLink("這是一個串連", "Index", "Home", new { page=1 },null)%>
3: <%=Html.ActionLink("這是一個串連", "Index", new { page=1 })%>
4: 有其它Html屬性的寫法
5: <%=Html.ActionLink("這是一個串連", "Index", "Home", new { id="link1" })%>
6: <%=Html.ActionLink("這是一個串連", "Index",null, new { id="link1" })%>
7: QueryString與Html屬性同時存在
8: <%=Html.ActionLink("這是一個串連", "Index", "Home", new { page = 1 }, new { id = "link1" })%>
9: <%=Html.ActionLink("這是一個串連", "Index" , new { page = 1 }, new { id = "link1" })%>

其產生結果為:

1: 帶有QueryString的寫法
2: <a href="/?page=1">這是一個串連</a>
3: <a href="/?page=1">這是一個串連</a>
4: 有其它Html屬性的寫法
5: <a href="/?Length=4" id="link1">這是一個串連</a>
6: <a href="/" id="link1">這是一個串連</a>
7: QueryString與Html屬性同時存在
8: <a href="/?page=1" id="link1">這是一個串連</a>
9: <a href="/?page=1" id="link1">這是一個串連</a>

這樣就可以使用ActionLink產生近乎所有的地址串連了。

注意,如果串連中不涉及到action及controller就沒有必要使用ActionLink,而是直接寫HTML代碼就可以了,例如

1: <a href="#1">一章</a>
2: <a href="javascript:void(0)" onclick="delete();">刪除</a>

2.RouteLink
2.1與ActionLink
RouteLink與ActionLink相差無幾,只是它的地址是由Route產生拿上面的例子

1: <%=Html.ActionLink("這是一個串連", "Index", "Home")%>

來說,如果用RouteLink來寫就是

1: <%=Html.RouteLink("這是一個串連", new { controller="Home",action="Index"})%>

而帶上QueryString以及Html屬性的ActionLink

1: <%=Html.ActionLink("這是一個串連", "Index" , new { page = 1 }, new { id = "link1" })%>

就可以這樣來寫

其實就是用一個建立立的RoutueDictionary的對象(new{}所執行個體化的對象將會等價轉換為RoutueDictionary)來替原來的Action,Controller字串的單獨指定。

2.2RouteLink使用Route規則
除了這些協同的用法,RouteLink還支援使用Route規則名來建立串連

例如我們在Global.asax檔案中添加一個Route規則

1: routes.MapRoute(
2:  "about",//這是規則名
3:  "about",//url
4:  new {controller = "Home", action = "about"}
5:  );

那麼我們就可以使用這個Route規則

1: <%=Html.RouteLink("關於", "about", new { })%>
2: <%=Html.RouteLink("關於", "about", new { page = 1 })%>
3: <%=Html.RouteLink("關於", "about", new { page = 1 }, new { id = "link1" })%>

來產生如下的HTML:

1: <a href="/about">關於</a>
2: <a href="/about?page=1">關於</a>
3: <a href="/about?page=1" id="link1">關於</a>

3.表單
很多情況下是要產生表單元素的,正如文章開始所述,修改一個內容的情況下,我們可能要將資料與表單綁定。

3.1產生Form
我們當然可以使用純的Html代碼或UrlHelper來產生一個Form。

但是因為是在HTML的屬性中,所以還是難以維護,幸好ASP.NET MVC為我們提供了一個Helper,我們可以通過以下兩種方式產生一個Form:

1: <%using(Html.BeginForm("index","home",FormMethod.Post)){%>
2: 表單內容
3: <%} %>
4: <%Html.BeginForm("index", "home", FormMethod.Post);//注意這裡沒有=輸出%>
5: 表單內容
6: <%Html.EndForm(); %>

BeginForm方法類似於ActionLink的調用方式,所以ASP.NET MVC還提供了BeginRouteForm這種方法。

當然這裡我們也可以使用new{}來為form的action增加querystring或HTML 屬性,方法與前面介紹的大同小異,參見方法列表即可。

3.2表單元素
ASP.NET MVC提供了多種表單元素的Helper。

其中包括:TextBox(類似input type=text,下面類似)、TextArea、DropDownList(select)、CheckBoxHidden、ListBox、Password、RadionButton。

注意:因為<input type=”submit” />一般情況下是不會綁定資料的所以ASP.NET MVC並未提供此Helper(曾經提供過在preview2之前)。

如果我們想提供一個input type=text 它的name為t1則以下代碼:

1: <%=Html.TextBox("t1") %>

3.3表單元素繫結
如果我們想要讓上文中的t1初始時就有一個值,比如 “重典”那麼我們可以按以下方式

1: <%=Html.TextBox("t1","重典") %>

如果資料是從資料庫中讀取,即得到資料是從Action中擷取的,那麼我們可以在Action中使用ViewData傳遞

Action:

1: ViewData["name"]="重典";

View:

1: <%=Html.TextBox("t1",ViewData["name"]) %>

以上方法看似簡單,其實ASP.NET MVC為我們提供了更為簡便的綁定方式---只要保證ViewData的Key與Helper所產生元素的name保持一致就可以自動綁定:

Action:

1: ViewData["t1"]="重典";

View:

1: <%=Html.TextBox("t1") %>

這樣就可以自動綁定了

3.4列表資料顯示與綁定
像TextBox這種值單一的資料比較容易,但是存在的資料比較多的DropDownList或ListBox應該怎麼綁定資料及初始化值呢,我們來看看下面的例子:

Action:

1: ViewData["sel1"] = new SelectList(
2:  new[] {1, 2, 3}
3:  , 3
4:  );

View:

1: <%=Html.DropDownList("sel1")%>

這樣就可以將列表內容、預設值、以及表單元素三者綁定在一起了。

而我們的列表內容並不是任何情況下都是數組的,大多情況下還是Key-Value對居多。

我們可以使用以下方式:

1: List<SelectListItem> list = new List<SelectListItem>
2:  {
3:  new SelectListItem {Text = "重典", Value = "1"},
4:  new SelectListItem {Text = "鄒健", Value = "2"},
5:  };
6: ViewData["sel1"] = new SelectList(
7:  list
8:  , "2"
9:  );

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.