您的位置:首页 > 编程语言 > ASP

Asp.Net MVC 学习心得 之 Html Helper

2009-03-09 17:30 543 查看
首先使用Asp.Net MVC可以不使用Html Helper,不过使用了Html Helper可以节约很多时间的O(∩_∩)O~

一、标准Html Helper

.ActionLink

创建一个链接,但现在还不能创建一个带图片的链接

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>
<asp:Content ID="indexContent" ContentPlaceHolderID="MainContent" runat="server">
<p>
To learn more about this website, click the following link:
<%= Html.ActionLink("About this Website", "About" ) %>
</p>
</asp:Content>

"Aboud this Website”显示的内容,"About” Action的名字

生成的Html如下:

<a href="/Home/About">About this Website</a>

ActionLink可以添加接受很多参数

· linkText – 链接上的文字

· actionName – 链接目标的action名字

· routeValues – 通向action的route值

· controllerName – controller名字

· htmlAttributes – 链接的html属性

· protocol – 链接协议 (比如:https)

· hostname – 链接的Host名字 (比如:www.MyWebsite.com)

· fragment – 这个还没弄的太明白╮(╯▽╰)╭

如果想添加个图片链接,使用Url.Action:

<a href="<%= Url.Action("Delete") %>"><img src="http://www.cnblogs.com/Content/Delete.png" alt="Delete" style="border:0px" /></a>


Html Helper还可以生成很多Html控件:

· BeginForm()

· CheckBox()

· DropDownList()

· EndForm()

· Hidden()

· ListBox()

· Password()

· RadioButton()

· TextArea()

· TextBox()

基本上看名字就知道了,看例子:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MvcApplication1.Models.Customer>" %>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

<%= Html.ValidationSummary("Create was unsuccessful. Please correct the errors and try again.") %>

<% using (Html.BeginForm()) {%>

<fieldset>
<legend>Register</legend>
<p>
<label for="FirstName">First Name:</label>
<%= Html.TextBox("FirstName") %>
<%= Html.ValidationMessage("FirstName", "*") %>
</p>
<p>
<label for="LastName">Last Name:</label>
<%= Html.TextBox("LastName") %>
<%= Html.ValidationMessage("LastName", "*") %>
</p>
<p>
<label for="Password">Password:</label>
<%= Html.Password("Password") %>
<%= Html.ValidationMessage("Password", "*") %>
</p>
<p>
<label for="Password">Confirm Password:</label>
<%= Html.Password("ConfirmPassword") %>
<%= Html.ValidationMessage("ConfirmPassword", "*") %>
</p>
<p>
<label for="Profile">Profile:</label>
<%= Html.TextArea("Profile", new {cols=60, rows=10})%>
</p>
<p>
<%= Html.CheckBox("ReceiveNewsletter") %>
<label for="ReceiveNewsletter" style="display:inline">Receive Newsletter?</label>
</p>
<p>
<input type="submit" value="Register" />
</p>
</fieldset>

<% } %>

</asp:Content>


其中Html.BeginForm()和EndForm()要单独说一下:默认情况下,它会指向和自己相同的action,但也会接受不同参数改变指向的action:

· routeValues -- 如上

· actionName – 如上

· controllerName – 如上

· method – 只能使用POST和GET,必须使用javascript

· htmlAttributes – 如上

.Encode(),这个就是替换<为< >为>等等

.AntiForgeryToken 这个是为了抵御跨域攻击的。

<%= Html.AntiForgeryToken() %>


会生成一个隐藏域,value是每次都不同的随机字符串,如:

<input name="__RequestVerificationToken"  type="hidden"value="6tbg3PWU9oAD3bhw6jZwxrYRyWPhKede87K/PFgaw
6MI3huvHgpjlCcPzDzrTkn8" />

helper会创建一个cookie和这个隐藏域的值相比较

在Controller中如下写代码就可以了:

using System.Web.Mvc;

namespace MvcApplication1.Controllers
{
public class BankController : Controller
{
//
// GET: /Bank/Withdraw

public ActionResult Withdraw()
{
return View();
}

//
// POST: /Bank/Withdraw
[AcceptVerbs(HttpVerbs.Post)]
[ValidateAntiForgeryToken]
public ActionResult Withdraw(decimal amount)
{
// Perform withdrawal
return View();
}

}
}


创建自己的HTML Helpers

using System;
using System.Web.Mvc;

namespace Helpers
{
public static class SubmitButtonHelper
{
/// <summary>
/// Renders an HTML form submit button
/// </summary>
public static string SubmitButton(this HtmlHelper helper, string buttonText)
{
return String.Format("<input type=\"submit\" value=\"{0}\" />", buttonText);
}

}
}


这样就名了吧,创建一个submit.(*^__^*)

这样可以创建很复杂的Html格式的。发挥想象

ps:代码还是别人的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: