mvc htmlhelper(转)

HtmlHelper:是为了方便View的开发而产生

一、HtmlHelper -Action

普通调整首页超级链接为:<a href="/home/index">首页</a>
当路由改变时候则需要修改,例如:<a href="/home/index.htm">首页</a>

如果项目里面有很多超级链接,那么就需要改动很多地方,不方便。

如果写成<a href="@Url.Action("Index","Home")">首页</a>,那么根据路由改变也不受影响。

对比:

@Url.Action("View1","Home")    浏览器输出字符串: /Home/View1

@Html.Action("View1","Home")   浏览器输出 /Home/View1 的页面内容

@Html.ActionLink("第二页","View1","Home")  浏览器输出能跳转到/Home/View1的超链接,并显示 第二页

引入Jquery插件时:

<script type="text/javascript" src="@Url.Content("~/Scripts/jquery-1.7.1.min.js")"></script>

二、HtmlHelper - Form

方式一:{}   强烈推荐
@using(Html.BeginForm("HandleForm", "Home")) 
{
}

方式二:Begin   End
@Html.BeginForm()
@{Html.EndForm();}

三、HtmlHelper –弱类型与强类型方法

1.弱类型方法:指定name和value
@Html.TextBox("Title",model.Title);
   <input type="text" id="Title" name="Title" value="ruiky"/>

@Html.RadioButton("chkHabit","篮球",true)
   <input checked="checked" id="chkHabit" name="chkHabit" type="radio" value="篮球" />
其他控件方法也一样

2.强类型方法:通过lambda表达式指定么模型属性(@model),强类型方法名有"For"后缀。

@model Models.Dog

@Html.TextBoxFor(m=>m.Name);
   <input type="text" id="Name" name="Name" value="ruiky"/>

四、HtmlHelper – LabelFor & 模型元数据

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

2.操作:

步骤一:为实体类属性设置 DisplayName 特性(特性Attribute,相当于标签,带一个构造函数参数。“贴标签”就是new了一个特性对象,设置给被贴的对象,编译器会将它编译进程序集的元数据中):

[DisplayName("登录名")]
public string LoginName { get; set; }

步骤二:在页面上显示某个属性的标签说明:

@Html.LabelFor(model => model.LoginName)

结果:生成Html源码:

<label for="LoginName">登录名</label>

五、HtmlHelper – Display / Editor 模型元数据

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

第一步:贴标签

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

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

@Html.EditorFor(model => model. Name)

结果:生成Html源码:
      <textarea class="text-box multi-line" id="Name" name="Name">       </textarea>

六、HtmlHelper –RenderPartial

从分部视图里取数据

@Html.RenderPartial( "Par", ViewData.Model );
@Html.RenderPartial( "~/Views/Home/Par.cshtml ", ViewData.Model );

这个方法通过接受分部视图的文件名以及相应的可变化的数据进行的呈现可重用 分部视图 显示到具体的页面中

区别:
     布局页面(模板页)子页,是把自己的内容填到 布局页面上去;
     分部视图:供某个页面过来取分部视图的内容。

七、HtmlHelper类 - RenderAction

在视图中请求某个 Action方法,并把返回的结果直接显示在当前调用的View中。(违反了mvc设计原则:controller 调用 view,而不是 view 调用 controller),不推荐!!!

@{Html.RenderAction("Test","Home");}

八、定义验证规则:
1.Model属性添加内置验证特性,介绍用的最多的其中的四个:

[Required], [StringLength], [Range], 和 [RegularExpression]

2.操作:

(1)Model层中:

public partial class BlogArticle
    {
        public int AId { get; set; }
        public int ACate { get; set; }
        public int AAuthor { get; set; }

[DisplayName("文章标题")]
        [Required(ErrorMessage="标题不能为空~~!")]
        [StringLength(12, MinimumLength = 2, ErrorMessage="标题长度必须在 2-12个字符之内")]
        [Range(0,100,ErrorMessage="必须是0-100之间的数值")]
        public string ATitle { get; set; }

}

(2)客户端验证:

a.引入JS脚本支持
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

b.添加语句
    @{Html.EnableClientValidation(true);}(MVC3中默认开启)

c.显示验证信息:

@using (Html.BeginForm()) {
        @Html.ValidationSummary(true)//一次性显示所有验证信息

@Html.EditorFor(model => model.ATitle)
        @Html.ValidationMessageFor(model => model.AId)//显示属于该属性的验证信息

}

(3)服务端验证:
  控制器中使用:ModelState.IsValid 判断是否通过验证

3.自定义验证特性及应用

可以通过继承自System.ComponentModel.DataAnnotations命名空间中的ValidationAttribute基类,定义完全定制的特性。
public class EmailAttribute : RegularExpressionAttribute
    {
        public EmailAttribute()
            :base(@"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$")
        {
        }
    }

补:获取当前请求路径:HtmlHelper.ViewContext.RequestContext.HttpContext.Request.Url.AbsolutePath;

时间: 2024-10-17 11:13:48

mvc htmlhelper(转)的相关文章

扩展ASP.NET MVC HtmlHelper类

在这篇帖子中我会使用一个示例演示扩展ASP.NET MVC HtmlHelper类,让它们可以在你的MVC视图中工作.这个示例中我会提供一个简单的方案生成Html表格. HtmlHelper类 HtmlHelper类用于在ASP.NET MVC framework中帮助视图呈现html部分. 这个类提供了一些方法,你可以使用这些方法呈现html中的一些类型(textbox,checkbox等),或者html的一部分(如form).ASP.NET MVC framework helper有这些内容

(asp.net MVC学习)System.Web.Mvc.HtmlHelper学习及使用

在ASP.NET MVC框架中没有了自己的控件,页面显示完全就回到了写html代码的年代.还好在asp.net mvc框架中也有自带的HtmlHelper和UrlHelper两个帮助类.另外在MvcContrib扩展项目中也有扩展一些帮助类,这样我们就不光 只能使用完整的html来编写了需要显示的页面了,就可以使用这些帮助类来完成,但最后运行时都还是要生成html代码的. 先来看看HtmlHelper能帮我们生成一些什么样的html呢.直接看效果吧. <div>          1.使用Ht

[转]ASP.NET MVC HtmlHelper扩展之Calendar日期时间选择

本文转自:http://blog.bossma.cn/asp_net_mvc/asp-net-mvc-htmlhelper-calendar-datetime-select/ 这里我们扩展HtmlHelper,就像它包含在ASP.NET MVC中一样,扩展方法使我们能为已有的类添加方法.这里使用了一个日期时间选择控件:My97DatePicker,需要添加到网站中,并在页面中引用. 先看看是怎么扩展的: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

asp.net mvc Htmlhelper简单扩展

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace WebApplication1.MyHtmlHelper { public static class MyHtmlHelper { //页面渲染结果: //<span>我扩展的Label,自动生成Span标签</span> //把标签名都显示(直接将内

mvc HtmlHelper 分页类 static的记得

HtmlHelper的扩展: 注意点:扩展方法必须是静态方法,所在的类必须是静态类,所在的命名空间改成System.Web.MVC则能省略页面中必须添加命名空间的约束. //主要就是输出分页的超级链接的标签 //自定义分页Helper扩展 public static HtmlString ShowPageNavigate(this HtmlHelper htmlHelper, int currentPage, int pageSize, int totalCount) { var redirec

MVC HtmlHelper

在ASP.Net MVC中微软并没有提供类似服务器端控件那种开发方式,微软的MVC就是传统的“请求--处理--响应”的回归. 微软为开发人员快速开发前台页面提供了丰富的HtmlHelper的辅助类,辅助我们快速开发前台页面,也提供了可扩展的接口,前台页面的标签可以做到高度可重 Url.Action  常用 修改路由规则,将 / 修改为 - 后,访问地址变为:http://localhost:11614/Home-Index <a href="/UserInfo/index">

数往知来 ASP.NET MVC HtmlHelper、MVC快速增删改查 Cache MVC3客户端验证 MVC隐式异步提交 &lt;二十八&gt;

一.HtmlHelper.MVC快速增删改查 MVC 在MVC里面请求首先到控制器-->然后 -->数据库数据放在APP_DATE文件夹里, -->js.css文件放在content文件夹里 -->控制器放在Controllers里,控制器要以controller结尾 控制器下面的所有方法都称为action 2)webform跟 aspnet MVC:区别请求的地址不一样了 MVC请求的是控制器下面的action webform:aspx页面或者是一般处理程序 -->a标签

自己动手写控件(模仿mvc htmlhelper的类)

自定义helper类,要求命名空间在 System.Web.Mvc之下,要求,静态类,静态方法,特殊生成对应html的返回字段, 传递Htmlhleper,返回特定类型 返回值是MvcHtmlString ,参数要有:this HtmlHelper htmlHelper using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Web; namespace Syst

MVC HtmlHelper用法大全

http://www.cnblogs.com/jyan/archive/2012/07/23/2604474.html HtmlHelper用来在视图中呈现 HTML 控件. 以下列表显示了当前可用的一些 HTML 帮助器. 本主题演示所列出的带有星号 (*) 的帮助器. ActionLink - 链接到操作方法. BeginForm * - 标记窗体的开头并链接到呈现该窗体的操作方法. CheckBox * - 呈现复选框. DropDownList * - 呈现下拉列表. Hidden -