设为首页 加入收藏

TOP

ASP.NET MVC5----了解我们使用的@HTML帮助类(一)
2019-09-03 02:14:06 】 浏览:32
Tags:ASP.NET MVC5---- 了解 我们 使用 @HTML 帮助

                                         20几岁,怕什么。

自己的感觉   

       说一个自己最近使用AngularJS的感受,我们之前使用mvc进行项目开发都是了解和经常使用HTML的帮助类,来完成我们前端大部分代码的编写,其实在我没有接触AngularJS之前对于这种方法还是很喜欢的,毕竟它是将.aspx页面革命掉的东西,但是随着项目中使用AngularJS我越来越喜欢这种将前后端分开的开发模式,我相信这就是以后的发展形势。但是眼下这个MVC还是要快快的用好。

:了解HTML帮助类的内在美

HTML辅助方法利用路由引擎找到HomeController控制器的Search操作,他在后台使用GetVirtualPath方法,该方法在RouteTable的Routes属性中,在global.asax中,Web应用程序注册所有的路由位置。

        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
        }

通过RouteConfig.RegisterRoutes(RouteTable.Routes);来实现我们辅助方法的实现。下面我们看下要是不需要这个,如何实现我们的辅助方法。

一般的写法:


@using (Html.BeginForm("Search","Admin",FormMethod.Post))
{
    <input type="text" name="text"/>
    <input type="submit" name="sub" value="Search"/>
}

不使用HTML帮助类的写法:

@{
    var context = this.ViewContext.RequestContext;   //请求上下文
    var values = new Routeva lueDictionary               //不区分大小写的键值对集合
    {
        {"controller","home"},
        {"action","index"}
    };
    var path = RouteTable.Routes.GetVirtualPath(context, values);      //返回与路由相关的URL
}
<form action="@path.VirtualPath",method="POST">
    <input type="text" name="text" />
    <input type="submit" name="sub" value="Search" />
</form>

现在我们看要是不使用帮助类就必须写这么多的代码,可以发现VS将我们需要写的代码全都封装起来,使用起来很方便。

辅助方法工作原理

每一个Razor视图都继承了它们的基类HTML属性,HTML属性的类型是System.Web.Mvc.HtmlHelper<T>;T是一个泛型类型的参数,代表传递给视图的模型类型(默认是dynamic),这个属性提供了一些可以在视图中调用的实例方法,还有很多扩展方法(.出来,方法名称左边有一个向下的箭头)。

:常用的辅助方法

---:每一个辅助方法都有一个htmlattributs属性,可以设置页面的html属性。

---:辅助方法大多数都是检查ViewDate对象以获取要显示的当前值(ViewBag对象中所有值也可以获取到)

---:辅助方法不仅可以查看ViewData内部的数据,也可以得到模型元数据 。

  • Html.BeginForm

提交表单时使用,这个一般和@using(){}一起,这样就可以释放掉资源。辅助方法在调用结束期间生成一个起始标签,并返回一个实现了接口IDisposable的对象。这样就可以在using(){]方法里面被释放掉。

  • Html.ValidationSummary()
        @Html.ValidationSummary(excludePropertyErrors:true)   //显示模型级别的错误。

此方法用来显示ModelState字典中所有验证错误的无序列表,使用参数(bool)来告知辅助方法错误的级别。(显示与模型本身相关的错误,不显示模型属性相关的错误。)

        public ActionResult Search()
        {
            ModelState.AddModelError("","模型级别的错误");   //设置为true
            ModelState.AddModelError("Title", "模型属性级别的错误");   //设置为false
            return View();
        }
  • Html.TextBox和Html.TextArea

都是显示文本,第一个是文本框Text,第二个是TextArea;TextArea可以设置显示指定的行数和列数。

image

  • Html.Label

返回一个label元素,并使用String类型的参数来决定渲染的文本和for特性值。这个一般使用显示输入框的标题。将模型属性中的Display(“姓名”)显示出来。

        [Display(Name = "姓名")]
        public string Name { get; set; }
  • Html.DropDownList和Html.ListBox

这两个都是返回一个<select/>元素。DropDownList第一个是单向选择,ListBox为多项选择。

关于下拉列表,它需要一个包含

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇repeater使用 下一篇Webform(七)——内置对象(Sess..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目