ASP.NET MVC3--表单和HTML辅助

本人刚开始学asp.net mvc3,以下是学习笔记:

1、表单

表单是包含输入元素的容器,其中包含按钮、复选框、文本框等元素。

action和method(传送并提交给服务器)看下面代码:

    <form action="http://www.google.com/search">
        <input name="a" type="text" />
        <input type="submit" value="Search!" />
    </form>
form没有method标签。当发送信息时,method特性可以告知浏览器使用的是HTTP POST 还是GET。现在没有method,很多人会认为默认的是POST,但是不是,默认方法仍是GET。
    <form action="http://www.google.com/search" method="get">
        <input name="a" type="text" />
        <input type="submit" value="Search!" />
    </form>
假设用户搜索 good  则跳转的URL为:http://www.google.com/search?q=good

GET还是POST方法?

GET方法不会改变服务器上的状态,客户端可以向服务器端重复的发送Get请求而不会产生负面影响。代表的事幂等操作和只读操作。可以在电子邮件或者网页中将URL当作超链接使用。

POST方法通常会改变服务器的状态,重复提交可能会产生不良的后果。post可以用来提交信用卡交易信息、向购物车添加、修改密码等。

在web程序中,get用于读操作,post用于写操作。

2、HTML辅助方法

    <form action="/Home/Search" method="get">
        <input name="a" type="text" />
        <input type="submit" value="Search" />
    </form>

上面的代码可以改写成:(HTML辅助)

      @using (Html.BeginForm("Search","Home",FormMethod.Get)){
        <input name="a" type="text" />
        <input type="submit" value="Search" />
        }
html.BeginForm 解析为:

 <form action="http://www.google.com/search" method="get">//或者post
html.ValidationSummary辅助方法可以用来显示ModelState字典中所有验证错误的无序列表,使用布尔类型(true)来告知辅助方法排除属性级别的错误。

添加输入元素

html.TextBox(和html.TextArea)

@html.TextBox("title",model.title)生成如下html:

<input id="title" name="title" type="text" value="xxx"/>

@html.TextArea("text","hello<br/> world")生成如下html:

<textarea cols="20" id="text" name="text" rows="2">hello &lt;br/&gt;world></textarea>

@html.TextArea("text","hello<br/> world",10,80,null)生成如下html:

<textarea cols="80" id="text" name="text" rows="10">hello &lt;br/&gt;world></textarea>

html.Label

@html.Label("GenreId")生成如下html:

<label for="GenreId">Genre</label>//Genre是辅助方法询问运行时是否有GenreId的可用模型元素时,运行从装饰Album模型的DisplayName特性中获取的。

label的作用是为其他输入元素显示附加信息,这样可以为用户提供人性化的界面,从而增强应程序的可访问性。label的for特性应该包含相关的元素id,呈现的界面可以利用label的文本为用户提供相关输入的更好描述。另外一点,如果用户单击label,那么浏览器就会把焦点传递给相关的输入控件,对于复选框和单选按钮特别有用,为用户提供更大的单击区域。

html.DropDownList(和html.ListBox)

两个标签都返回<select/>元素。DropDownList允许单项选择,ListBox支持多项选择。

通常select元素有两个作用:1展示列表 2 展示字段当前值。例子:

 ViewBag.ArtistId = new SelectList(db.Artists, "ArtistId", "Name", album.ArtistId);
html.ValidationMessage

添加一条错误:ModelState.AddModelError("Title","What a terrible name!");

@html.ValidationMessage("Title")生成如下html:

<span class="field-validation-error" data-valmsg-for="Title" data-valmsg-replace="true">

What a terrible name!</span>

@html.ValidationMessage("Title","What a terrible name!")生成如下html:

<span class="field-validation-error" data-valmsg-for="Title" data-valmsg-replace="false">

What a terrible name!</span>

强类型辅助方法:

在原有的基础上加上一个for后缀,并传入一个lambda表达式MSDN--lambda表达式来渲染指定的模型属性。

上述的例子可以写成下面:

@html.LabelFor(m=>m.GenreId)

@html.DropDownListFor(m=>m.GenreId,ViewBag.Genres as SelectList)

@html.TextBoxFor(m=>m.Title)

@html.ValidationMessageFor(m=>m.Title)

扩展的其他辅助方法:

@html.Hidden("wizardStep","1")生成如下html:

<input id="wizardStep" name="wizardStep" type="hidden" value="1"/>

@html.HiddenFor(m=>m.WizardStep)

html.Password

@html.Password("pwd")生成如下html:

<input id="pwd" name="pwd" type="password" value="" />

@html.PasswordFor(m=>pwd)

html.RadioButton

@html.RadioButton("color","Blue",true//或者没有这一项)

<input id="color" name="color" type="radio" value="Blue" checked="checked"/>

@html.RadioButtonFor(m=>m.Color,"1")  //Blue

html.CheckBox//唯一一个渲染两个输入元素的辅助方法。

@html.CheckBox("aaa")

<input id="aaa" name="aaa" type="checkbox" value="true" />

<input name="aaa" type="hidden" value="false" />

html.ActionLink和html.RouteLink

@html.ActionLink("link text","index","shopping",new{id=1}//有些不用传递参数,null)//链接shoppingController控制器的index操作 并传入参数id=1。

@html.RouteLink("link text",new{action="shopping"})相比之下,此方法不用接受控制器名称和操作名称。

URL辅助方法有action content routeUrl3个(不详说)

html.Partial 和html.RenderPartial

aaa为分部视图

@html.Partial("aaa")

@{html.RenderPartial("aaa")}

两条输出的内容相同,但是第一个要更加的方便,第二个有更好的性能(需要大量的重复调用才能看出来).

html.Action 和html.RenderAction//类似于Partial和RenderPartial这里不详说

小结:

辅助方法有利于我们程序员更好的编程!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值