服务端代码 生成客户端
1.ActionLink 其中最常用的就是Html.ActionLink
1.1基本的使用方式
@Html.ActionLink("这是一个连接", "Index", "Home") <a href="/">这是一个连接</a> ActionLink中的三个参数分别为 (显示的文字 Action Controller)
其中Controller可以省略,省略时指向同一Controller下的Action。
1.2ActionLink中QueryString与Html属性设置
1: 带有QueryString的写法
@Html.ActionLink("这是一个连接", "Index", "Home", new { page=1 }) <a href="/?page=1">
@Html.ActionLink("这是一个连接", "Index", new { page=1 ,id=2}) <a href="/?page=1&id=2">
这样就可以使用ActionLink生成近乎所有的地址连接了。注意,如果连接中不涉及到action及controller就没有必要使用ActionLink,而是直接写HTML代码就可以了,
例如
1:<a href="#1">一章</a>
2:<ahref="javascript:void(0)"onclick="delete();">删除</a>
2.RouteLink2.1与ActionLink
RouteLink与ActionLink相差无几,只是它的地址是由Route生成拿上面的例子
1: @Html.ActionLink("这是一个连接", "Index", "Home") 来说,
如果用RouteLink来写就是
1: @Html.RouteLink("这是一个连接", new { controller="Home",action="Index"})
而带上QueryString的ActionLink
@Html.ActionLink("这是一个连接", "Index" , new { page = 1 })
@Html.RouteLink("这是一个连接", new { action = "index", page = 1 }, new { id="link1"})
其实就是用一个新建立的RouteValueDictionary的对象(new{}所实例化的对象将会等价转换为RouteValueDictionary)来替原来的Action,Controller字符串
3.Url.Action
<a href="@Url.Action("we","Home")">测试</a> <a href="Home/we ">测试</a>
<a href="@Url.Action("WSShopFlow", "Profile", new { Id = @demo.Id)">@demo.Name</a> <a href="Profile/WSShopFlow?id=?">???</a>
其中参数Id一定要与Profile控制器下的WSShopFlow方法中的参数一样,可以用多个有多个参数.
4. 其他
public class Model
{
//[Required] 注释的区别
[Display(Name = "User name显示")]
public string UserName { get; set; }
[Required]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
[Required]
//[Display(Name = "Remember me?")] //注释的区别
public bool RememberMe { get; set; }
}
@Html.RadioButton("Q",1) <inputid="dsd"name="dsd"type="radio"value="1" />
@Html.RadioButtonFor( )
@Html.LabelFor(m => m.UserName) <label for="UserName">User name显示</label>
@Html.Label("DSADS") <label for="DSADS">DSADS</label>
@Html.LabelFor(m => m.RememberMe) <label for="RememberMe">RememberMe</label>
注意在Model类中的UserName,RememberMe字段中有“[Display]”属性 ,其中RememberMe被注释掉了,在显示给客户端的时候就默认显示了RememberMe的字段名称,而UserName的就显示了“[Display]”的解释 这就是区别一 :取了别名。
@Html.CheckBox("bixuqiangleixing",true)
@Html.CheckBoxFor(m => m.RememberMe,true)
客户端分别为:
<input checked="checked" id="bixuqiangleixing" name="bixuqiangleixing" type="checkbox" value="true" />
<input name="bixuqiangleixing" type="hidden" value="false" />
<input data-val="true" data-val-required="The RememberMe field is required." id="RememberMe" name="RememberMe" type="checkbox" value="true" /><inputname="RememberMe"type="hidden"value="false" />
在在Model类字段中有“[Required] ” 注解也就有了启用了客户端验证:data-val=“true" ;默认生成了错误验证提示:data-val-required=“The"+字段名称+“is required”这就是区别二
@Html.ValidationMessageFor(m => m.UserName)
客户端:
<span class="field-validation-valid" data-valmsg-for="UserName" data-valmsg-replace="true"></span>
@Html.Password("THIS")
@Html.PasswordFor(m => m.Password)
客户端分别为:
<inputid="THIS"name="THIS"type="password" />
<input data-val="true" data-val-required="The Password field is required." id="Password" name="Password" type="password" />
@Html.Hidden("hhhh") <inpt id="hhhh" name="hhhh" type="hidden" value="" />
@Html.DisplayFor(modelItem => item.LastName)
直接这个属性的值
在第三个参数是控制器 如果在同一个控制器下 可以略写
@Html.EditorFor(model => model.EnrollmentDate)
显示这个属性的值
@Html.DropDownListFor(x=>x.Gender,new[]{new SelectListItem(){Text="我是男的", Selected=true, Value="true"},new SelectListItem(){Text="我是女的", Selected=false, Value="false"}},"请选择你的性别")
客户端:
select id="Gender" name="Gender">
<option value="">请选择你的性别</option>
<option selected="selected" value="true">我是男的</option>
<option value="false">我是女的</option>
</select>
@using (Html.BeginForm("LogOn","Account")) { }
<form action="/Account/LogOn" method="post"> </form>
区别三就是服务端Html中带有“For”的只能是强类型数据:如:model => model.EnrollmentDate