1.动态生成URL

  • @Url.Action("Index3","Stu3")
  • @Url.RouteUrl("Default2", new { controller = "Stu3", action = "Index3", id = UrlParameter.Optional })

2.在视图上直接请求其他action

    • @Html.Action("actionName")

3.生成超链接

    • @Html.ActionLink("我是超链接~", "Party", "Home", new { id = "newId", style = "color:red" })

4.表单Form

  • 4.1.@using (Html.BeginForm())
  • 4.2.Begin End

5.弱类型和强类型方法

  • 5.1.弱类型方法:@Html.TextBox("Title",model.Title);
  • 5.2.强类型方法:@Html.TextBoxFor(s=>s.Name)

6.LabelFor & 模型元数据

    • @Html.LabelFor(s=>s.Name)

7.Display / Editor 模型元数据

  • [DataType(DataType.Password)]
  • @Html.EditorFor(s=>s.Name)

1.动态生成URL

RouteConfig.cs

routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Stu", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default2",
url: "{action}/{controller}/{id}",//{action}/{controller}位置改编
defaults: new { controller = "Stu", action = "Index", id = UrlParameter.Optional }
);

Html/index.cshtml

直接编写 url 造成格式固定,不灵活<br/>
<a href="/Stu/Index">1.去玩</a><br />
Url.Action 方法 根据 路由规则生成 url 地址<br />
<a href="@Url.Action("Index3","Stu3")">2.去玩Url.Action</a><br />
Url.RouteUrl 方法 根据 路由 name 生成 url 地址,更灵活<br />
<a href="@Url.RouteUrl("Default2", new { controller = "Stu3", action = "Index3", id = UrlParameter.Optional })">
3.去玩 Url.RouteUrl
</a>

2.在视图上直接请求其他action

@Html.Action("actionName")

参考:8.4 MVC – 8.Razor 布局

3.生成超链接

@Html.ActionLink("我是超链接~", "Party", "Home", new { id = "newId", style = "color:red" })

html源代码

<a href="/Html/Party?Length=4" id="newId" style="color:red">我是超链接~</a>

4.表单Form

4.1.强烈推荐第一种用法

@using (Html.BeginForm("HandleForm", "Home", FormMethod.Post, new { id = "form1" }))
{
<input type="text" />
}

4.2.Begin End

@Html.BeginForm("HandleForm", "Home", FormMethod.Post, new { id = "form2" })
<input type="text" />
@{Html.EndForm();}

5.弱类型和强类型方法

5.1.弱类型方法:

指定 name value

@Html.TextBox("Title",model.Title);

<input id="Title" name="Title" type="text" value="aaaa" /></form>

@Html.RadioButton("chkHabit","篮球",true)

<input checked="checked" id="chkHabit" name="chkHabit" type="radio" value="篮球" />

等其他控件方法也一样

5.2.强类型方法:

强类型方法名有"For"后缀

因为在Razor引擎内部,<> 尖括号在这里被识别为html标签

通过lambda表达式指定模型属性(@model)

@model _06MVCAjax_CodeFirst.Models.Student

@Html.TextBoxFor(s=>s.Name)
@Html.DropDownListFor(s => s.Cid, ViewBag.seList as IEnumerable<SelectListItem>)

特殊案例:

单选按钮:性别

@*<input type="radio" id="GenderFF" name="Gender" value="保密" checked="checked" />保密
<input type="radio" id="GenderM" name="Gender" value="男" />男
<input type="radio" id="GenderW" name="Gender" value="女" />女*@
@Html.RadioButtonFor(s => s.Gender, "保密", new { id = "GenderFF" })保密
@Html.RadioButtonFor(s => s.Gender, "男", new { id = "GenderM" })男
@Html.RadioButtonFor(s => s.Gender, "女", new { id = "GenderW" })女

js

//性别
if (jsonObj.Data.Gender=="男") {
$("#GenderFF").removeAttr("Checked");
$("#GenderW").removeAttr("Checked");
$("#GenderM").attr("Checked","Checked");
}else if (jsonObj.Data.Gender=="女") {
$("#GenderFF").removeAttr("Checked");
$("#GenderM").removeAttr("Checked");
$("#GenderW").attr("Checked","Checked");
}else {
$("#GenderM").removeAttr("Checked");
$("#GenderW").removeAttr("Checked");
$("#GenderFF").attr("Checked","Checked");
}

6.LabelFor & 模型元数据

把姓名,班级,性别改为lable标签

@Html.LabelFor(s=>s.Name)

@Html.LabelFor(s => s.Cid)

@Html.LabelFor(s => s.Gender)

效果如下:

<label for="Name">Name</label>

<label for="Cid">Cid</label>

<label for="Gender">Gender</label>

解决方案:

模型类的元数据包括:属性(名称和类型) 与特性包含的值。

为实体类属性设置 DisplayName 特性:

[DisplayName("班级名")]
public Nullable<int> Cid { get; set; }

注意:DisplayName需要命名空间

using System.ComponentModel;

生成的html代码:

<label for="Name">姓名</label>

7.Display / Editor 模型元数据

@Html.Editor / @Html.Display 可以通过读取特性值生成HTML:

[DataType(DataType.Password)]
public string Name { get; set; }

注意:DataType需要命名空间:

using System.ComponentModel.DataAnnotations;

在 新增/修改 页面上显示某个属性的input标签:

@*<input type="text" id="Name" name="Name" />*@
@Html.EditorFor(s=>s.Name)

生成的html代码:

<input type="password" value="" name="Name" id="Name" class="text-box single-line password">

MVC - 12.HtmlHelper的更多相关文章

  1. MVC中HtmlHelper用法大全参考

    MVC中HtmlHelper用法大全参考 解析MVC中HtmlHelper控件7个大类中各个控件的主要使用方法(1) 2012-02-27 16:25 HtmlHelper类在命令System.Web ...

  2. MVC 自定义Htmlhelper扩展

    在MVC中,我们不仅可以使用它原来的方法,我们还可以自定义,这不不仅加大了我们开发的效率,同时使界面更简洁. 具体什么是扩展方法,你可以这样理解,必须是静态且在形参中第一个参数是以this开头,大概先 ...

  3. 返璞归真 asp.net mvc (12) - asp.net mvc 4.0 新特性之移动特性

    原文:返璞归真 asp.net mvc (12) - asp.net mvc 4.0 新特性之移动特性 [索引页][源码下载] 返璞归真 asp.net mvc (12) - asp.net mvc ...

  4. MVC之htmlhelper总结

    自学习mvc以来,htmlhelper使用的也非常多,下面开始总结一下吧,由于本人比较懒,内容大部分摘自slark.net的笔记, 有人问为什么用这个htmlhelper,我就喜欢用原生的标签,这个按 ...

  5. asp.net MVC添加HtmlHelper扩展示例和用法

    一.先创建一个HtmlHelper的扩展类,代码: using System; using System.Collections.Generic; using System.Linq; using S ...

  6. ASP.NET MVC 扩展HtmlHelper类方法

    1.扩展HtmlHelper类方法ShowPageNavigate 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ...

  7. mvc 扩展htmlhelper

    using System.Web.Mvc; namespace System.Web.Mvc{    public static class HtmlExtend    {        public ...

  8. ASP.NET MVC Razor HtmlHelper扩展和自定义控件

    先看示例代码: using System; using System.Collections.Generic; using System.Linq; using System.Web; using S ...

  9. MVC采用HtmlHelper扩展和Filter封装验证码的功能

    最近因为有个项目除了登录还有其他很多地方需要用到验证码的功能,所以想到了采用HtmlHelper和ActionFilter封装一个验证码的功能,以便能够重复调用.封装好以后调用很方便,只需在View中 ...

随机推荐

  1. sun.security.x509.CertAndKeyGen;找不到

    导入已有项目编译时出错,报: import sun.security.x509.CertAndKeyGen;找不到 而这个包属于sun公司的jar包.不是项目本身的问题,而是开发环境的问题. 最后原因 ...

  2. HDU5875 Function

    题意:给定序列,有m个区间的询问,求每个询问a[l]%a[l+1]...%a[r]后的值.(N<=10^5) 思路:这题如果使用线段树,可能会由于姿势和卡常数原因TLE,由于数据好像比较奇怪(? ...

  3. PAT (Advanced Level) 1007. Maximum Subsequence Sum (25) 经典题

    Given a sequence of K integers { N1, N2, ..., NK }. A continuous subsequence is defined to be { Ni, ...

  4. Java包名命名规则

    1.  sun公司建议java包的命名规则为域名的倒写. 比如:sun公司www.sun.com 就用该是com.sun.www 2. indi : 个体项目,指个人发起,但非自己独自完成的项目,可公 ...

  5. Packet Tracer 5.0 构建CCNA实验(2)—— 配置VLAN

    Packet Tracer 5.0 构建CCNA实验(2)—— 配置VLAN Vlan(Virtual Local Area Network) 即虚拟局域网.VLAN可以把同一个物理网络划分为多个逻辑 ...

  6. 【BZOJ】1607: [Usaco2008 Dec]Patting Heads 轻拍牛头

    [算法]模拟 #include<cstdio> #include<algorithm> using namespace std; ,maxm=; int a[maxn],A[m ...

  7. quick-cocos2dx lua中读取 加密 csv表

    我非常想把一些非必需的信息以CSV表的格式保存到客户端,以减少和服务器的通讯,降低压力.于是写了这么一个. 但因为大家觉得这样的话,需要每次登陆时来检测同步这些数据,会减慢登陆速度,于是没有用到. 我 ...

  8. SCU 1029 Humble Numbers (打表处理)

    题目链接 题意:素因子中只有2 3 5 7的数称为谦逊的数,1也是谦逊的数,题目中已经给出了前20个谦逊的数.给定数字n,按格式输出第n个谦逊的数. 题解:打表即可,注意打表的技巧就行了. ps:这道 ...

  9. [Unity]在Shader中获取摄像机角度、视线的问题

    又踩了一坑,好在谷歌到了之前的一个人遇到相同的问题,顺利解决. 先说说问题背景,我目前的毕设是体数据渲染,实现的办法是raycast.最基本的一点就是在fragment program里,获取rayc ...

  10. java map 转 json 自编封装

    1.自编封装代码: import com.alibaba.fastjson.JSON; import java.util.*; public class jsonConversion { privat ...