MVC @Html控件(转载)

传统的Html元素不能和服务端数据进行绑定 HtmlHelper类提供了一系列的方法来生成Html元素 并可以实现与数据绑定在一起 然后生成Html

Html.BeginForm(actionName , controllerName , FormMethod , htmlAttribute)

创建一个表单

actionName 和 controllerName

这两个参数表示表单要提交到哪个controllerName下的哪个Action方法中

FormMethod

此参数是一个枚举 表示表单提交方式  GET or POST

htmlAttribute

表示form元素的Html属性 是一个object对象 使用new {html属性名字="值"} class也是html属性 但同时它是C#关键字 只能这样指定:new {@class="formstyle"}

Html.EndForm()

表示表单结束 如

1 @Html.BeginForm("index", "default", FormMethod.Post, new {id="form1"})
2 <input type="text" />
3 @{Html.EndForm();}

BeginForm方法返回System.Web.Mvc.Html.MvcForm类型 如果不用中括号括起来 则表示要输出该方法返回的值 EndForm无返回值 所以也需要使用中括号括起来 最后一个参数通过objecr来指定它的Html属性

Html.Raw()

@Html.Raw() 方法输出带有html标签的字符串,如:
@Html.Raw("<div style=‘color:red‘>输出字符串</div>")
结果:输出字符串

Html.RadioButton(name,value,Ischecked,htmlAttribute)

创建单选按钮

name

单选按钮的name

value

单选按钮的值

Ischecked

是否是选中状态

1 @{Html.BeginForm("index", "default", FormMethod.Post);}
2     男人 @Html.RadioButton("radiobtn","man",true,new{@class="radioStyle"})
3     女人 @Html.RadioButton("radiobtn","woman",false,new{@class="radioStyle"})
4 @{Html.EndForm();}

Html.RadioButtonFor(expression,value,htmlAttribute)

同样是创建单选按钮的方法 但+For后缀的方法可以使用强类型作为参数expression的参数 推导出类型的属性 它可以将类型的属性名字作为表单元素的name的值

expression

类型为System.Linq.Express.Expression.<Fun<dynamic,Tproperty>>的表达式  如

1 @model Course.Models.Employee
2 @{Html.BeginForm("index", "default", FormMethod.Post);}
3     北京 @Html.RadioButtonFor(n=>n.Address,"北京",new{@class="radioStyle",@checked="checked"})
4     上海 @Html.RadioButtonFor(n=>n.Address,"上海",new{@class="radioStyle"})
5 @{Html.EndForm();}

Html.CheckBox()

创建复选框

不建议使用此方法来创建复选框 服务端不好获取值 请直接使用input 注意每个复选框需要有value值 否则获取的选中的复选框的值永远是on

1 <input type="checkbox" class="Book" value="1" name="Books" checked="checked"/>民谣<br/>
2 <input type="checkbox" class="Book" value="2" name="Books" checked="checked"/>电子<br/>
3 <input type="checkbox" class="Book" value="3" name="Books" />低保真<br/>

在Action中这样获取

1 public ActionResult Editor(int[] Books)
2 {
3     foreach (var item in Books)
4     {
5     }
6 }

Html.CheckBoxFor()

不建议使用此方法

Html.DropDownList(name , selectList , defaultSelected,htmlAttribute)

创建下拉选项

name

下拉选项的name

selectList

一个IEnumerable<SelectListItem>集合 集合中的每个选项是SelectListItem类型的 我们可以在Action中创建实现了IEnumerable<selectListItem>接口的集合 然后将集合作为此方法的第二个参数 如

 1 public ActionResult Index()
 2 {
 3     List<SelectListItem> itemList = new List<SelectListItem>
 4     {
 5         new SelectListItem{Text="荔枝",Value="荔枝", Selected=false},
 6         new SelectListItem{Text="番茄",Value="番茄",Selected=false},
 7         new SelectListItem{Text="芒果",Value="芒果",Selected=false}
 8     };
 9     ViewData["choose"] = itemList;
10     return View();
11 }

在视图中

1 @{Html.BeginForm("index", "default", FormMethod.Post);}
2     @Html.DropDownList("choose",ViewData["choose"] as IEnumerable<SelectListItem>,new{@class="selectStyle"})
3 @{Html.EndForm();}

defaultSelected

一个文本 表示默认选择的项 可选

1 @Html.DropDownList("choose",ViewData["choose"] as IEnumerable<SelectListItem>,"请选择",new{@class="selectStyle"})

使用Linq创建下拉选项集合 如

 1 public ActionResult Index()
 2 {
 3     List<Employee> empList = new List<Employee>
 4     {
 5             new Employee{ ID=1, Name="sam"},
 6             new Employee{ ID=2, Name="leo"},
 7             new Employee{ ID=3, Name="korn"}
 8     };
 9     List<SelectListItem> itemList = (from n in empList.ToList()
10                                         select new SelectListItem { Text = n.Name, Value = n.ID.ToString(), Selected = false }).ToList();
11
12     ViewData["choose"] = itemList;
13     return View();
14 }

还可以直接创建SelectList对象来得到同样的结果 这种方式更简洁 如

 1 public ActionResult Index()
 2 {
 3     List<Employee> empList = new List<Employee>
 4     {
 5             new Employee{ ID=1, Name="sam"},
 6             new Employee{ ID=2, Name="leo"},
 7             new Employee{ ID=3, Name="korn"}
 8     };
 9     SelectList selecyList = new SelectList(empList, "ID", "Name");
10     ViewData["choose"] = selecyList;
11     return View();
12 }

在视图中只需两个参数 参数1为choose 引用的是ViewData["choose"]中的键

1 @Html.DropDownList("choose","请选择")

Html.DropDownListFor(expression,selectList,htmlAttribute)

同样是创建下拉选项的方法 但+For后缀的方法可以使用强类型作为参数expression的参数 推导出类型的属性 它可以将类型的属性名字作为下拉选项元素的name的值

expression

类型为System.Linq.Express.Expression.<Fun<dynamic,Tproperty>>的表达式

selectList

类型为SelectLlist的对象

 1 public ActionResult Index()
 2 {
 3     List<Employee> empList = new List<Employee>
 4     {
 5             new Employee{ ID=1, Name="sam"},
 6             new Employee{ ID=2, Name="leo"},
 7             new Employee{ ID=3, Name="korn"}
 8     };
 9     SelectList selectList = new SelectList(empList, "ID", "Name");
10     ViewData["choose"] = selectList;
11     return View();
12 }

在视图中

1 @model Course.Models.Employee
2 @{Html.BeginForm("index", "default", FormMethod.Post);}
3     @Html.DropDownListFor(n=>n.Name,ViewData["choose"] as SelectList,new{@class="selectStyle"})
4 @{Html.EndForm();}

Html.ActionLink(linkText , actionName , controlName , routeValues , htmlAttribut)

//var url = "Url.Action("SearchResult")" + "?name=" + keyword;

创建超链接

linkText

超链接文本

actionName

提交到哪个Action处理

controlName

提交到哪个控制器 可选 默认就是当前视图所属的Action所在的控制器

routeValues

object对象 设置超链接查询字符 跟设置html属性是一样的 如new {id=1,name="sam"}

1 @Html.ActionLink("详细","Detail",new { id=1})

生成的超链接为

1 生成对应的超链接为:
2 <a href="default/Detail/1">详细</a>

提供多个查询字符

1 Html.ActionLink("详细","Detail",new { id=1,name="sam"})
2 生成对应的超链接为:
3 <a href="default/Detail?id=1&name=1">详细</a>

Html.Partial()

将分布视图渲染到当前视图页面 该方法具有多个重载版 所有参数介绍如下

partialName

参数为分布视图名称

viewData

一个ViewDataDictionary类型的对象

model

分布视图需要使用的强类型对象

分布视图可以手动在当前视图的目录中创建 扩展名还是cshtml 只不过里面没有<html>/<head>/<body>标签 你可以在分布视图中编写body以下级别的html元素 也可以写Js和服务端脚本 除了没有几个主体标签 其它和视图都是一样的 可以右击Action - 添加视图 选择分布视图 如

打开TestPartial文件 输入以下代码做个测试

<div style="background:#010067;width:200px;height:100px;padding-top:50px;text-align:center;color:white;">
    <label style="color:red;font-size:20px;font-weight: bolder;vertical-align:middle;">+</label>
    <label style="vertical-align:middle;">这个框里的内容是分布视图TestPartial</label>
</div>

接着打开Index视图 调用此方法来加载分布视图TestPartial

<body>
    <div style="background:#ffd800;width:200px;padding:10px;">
        这是Index视图<br /><br />
        @Html.Partial("TestPartial")
    </div>
</body>

运行http://localhost:8559/default/index 结果如图:

viewData参数和model参数的用法如下

<body>
    <div style="background:#ffd800;width:200px;padding:10px;">
        这是Index视图<br /><br />
        @Html.Partial("TestPartial", new Course.Models.Employee{ ID=1, Name="sam"}, new ViewDataDictionary { {"music1","Free Jazz"},{"music2","BossaNova"}})
    </div>
</body>

在分布视图中可获取viewData和model model必须声明一下

@model Course.Models.Employee
<div style="background:#010067;width:200px;height:100px;padding-top:50px;text-align:center;color:white;">
    <label style="color:red;font-size:20px;font-weight: bolder;vertical-align:middle;">+</label>
    <label style="vertical-align:middle;">@Model.Name</label>
    <p><label style="vertical-align:middle;">@ViewData["music1"]</label></p>
    <p><label style="vertical-align:middle;">@ViewData["music2"]</label></p>
</div>

运行http://localhost:8559/default/index 结果如图:

Html.RenderPartial()

与Partial方法有类似的行为 区别在于Partial是将分布视图作为字符串加入主视图 而RenderPartial则是将分布式图写入响应输出流 在性能上RenderPartial要优于前者 但以往内此方法不返回值 所以必须使用中括号括起来

@{Html.RenderPartial("TestPartial");}
@{Html.RenderPartial("TestPartial", new Course.Models.Employee{ ID=1, Name="sam"}, new ViewDataDictionary { {"music1","Free Jazz"},{"music2","BossaNova"}});}

Html.Action()

调用一个子操作(Action) 并以Html形式返回结果

actionName

Action的名称

controllerName

控制器的名称

routeValues

路由参数 格式:new {id=xx,code=xxx}

此方法与Partial类似 区别在于 Partial方法不经过Action处理 它直接加载一个分部视图页面 而Action方法会先经过Action处理再加载分布视图 其用法如下

public ActionResult Menu()
{
    return PartialView("Menu");
}

右击Menu方法 创建一个分部视图Menu 打开分部视图 输入如下代码

<div style="background: #010067; text-align: center; color: white;">
    <p>这是分布视图</p>
    <ul>
        <li>坂本龍一  </li>
        <li>Ian Brown</li>
        <li>Ataraxia </li>
    </ul>
</div>

在Index页面调用此方法

<body>
    <div style="background:#ffd800;width:200px;padding:10px;">
        这是Index视图<br /><br />
        @Html.Action("Menu")
    </div>
</body>

结果

Html.RenderAction()

与Action方法有类似的行为 区别在于Action方法是将分布视图作为字符串加入主视图 而RenderAction则是将分布式图写入响应输出流 在性能上RenderAction要优于前者 但以往内此方法不返回值 所以必须使用中括号括起来

类似的Html辅助方法还有Html.Hidden()、Html.PassWord()、Html.TextBox() 略 ……

UrlHelper类提供了方法用于生成URL

Content()

将一个虚拟的、相对的URL转换为应用程序的绝对URL 如

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

Encode()

对URL地址进行加密

1 @Url.Encode("http://www.cnblogs.com/")

生成http%3a%2f%2fwww.cnblogs.com%2f

博客原地址:http://www.fx114.net/qa-141-73218.aspx

时间: 2024-10-14 01:26:10

MVC @Html控件(转载)的相关文章

mvc日期控件datepick的几篇文章,日后再总结吧

instinctcoder里有两篇,入门级的 http://instinctcoder.com/asp-net-mvc-4-jquery-datepicker/ http://instinctcoder.com/asp-net-mvc-4-jquery-datepicker-date-format-validation/ @Html.TextBoxFor(m=>m.UserName) 生成html时,input控件type="text", id和name属性都被赋值为"

【随笔系列】Asp.Net Mvc分页控件PagedList的使用方法及配置

企业在做Asp.Net Mvc开发过程中,很多时候都是一些CRUD,最基本的就是一个列表页面,然后附带一些功能按钮.如果有数据列表,大多数就会涉及到对数据进行分页,这次就介绍一下Mvc PagedList控件分页的使用方法.Github PagedList链接 . 下面我通过新建Mvc项目来展示PagedList的使用方法. 一.新建BookLibrary解决方案 确定后,选择MVC 然后点击确定. 二.添加PagedList与PagedList.Mvc的程序包. 选择BookLibrary项目

Essential Grid for ASP.NET MVC表格控件详细介绍及下载

Essential Grid for ASP.NET MVC是一款轻量级的,支持AJAX的,高性能的表格控件,完全支持ASP.NET MVC框架,具有丰富的功能,包含分组.排序.翻页.数据绑定.编辑.过滤.多种内嵌皮肤,可以处理上亿的数据量. 具体功能: 支持对一列或多列数据进行分组 支持单行.列.多行选择 支持通过拖拉操作调整列大小.改变列位置 支持Unbound列 当表格数据有几页时,控件提供了一个页导航条,可用于定位某页或是翻页 支持过滤操作 支持绑定到复杂的数据对象 支持导出数据到Exc

2016 系统设计第一期 (档案一)MVC 相关控件整理

说明:前者是MVC,后者是boostrap 1.form 表单 @using (Html.BeginForm("Create", "User", FormMethod.Post, new { @class = "form-horizontal" })) {} 2. 文本框 @Html.TextBox("LoginName", "", new { @class = "form-control&quo

AceAdmin In MVC之控件

AceAdmin有很多Html控件,而下载下来之后全部混杂在一起,想用一个控件有时得调整半天,干脆整理出一个版本,而且结合起来MVC的封装.以后就不用一个js css的调了. 在MVC中Html的控件有两种,一个带for一个不带for. @Html.TextArea:直接输出一个文本框,可以自定义输出任何内容. @Html.TextAreaFor:输出绑定Model的文本框. 一.下拉框 1.基本示例 视图: @{ Layout = null; } <!DOCTYPE html> <ht

Essential ASP.NET MVC用户界面控件包

User Interface Edition for ASP.NET MVC是一款高性能的AJAX Web用户界面产品集合,包含表格.图表.多种界面元素.日历日程.仪表等,是开发人员能在 Asp.NET MVC框架下创建出专业的商业Web应用程序. 具体功能: Essential Grid for ASP.NET MVC 是一款轻量级的,支持AJAX的,高性能的表格控件,完全支持ASP.NET MVC框架,具有丰富的功能,包含分组.排序.翻页.数据绑定.编辑.过滤.多种内嵌皮肤,可以处理上亿的数

IOS的各种控件(转载,防止遗忘)

UITextView控件的详细讲解 感觉写的相当不错,而且很全就直接转载了 1.创建并初始化 创建UITextView的文件,并在.h文件中写入如下代码: #import <UIKit/UIKit.h> @interface TextViewController : UIViewController <UITextViewDelegate> { UITextView *textView; } @property (nonatomic, retain) UITextView *tex

MVC、控件、一般处理程序中的session and cookie

Mvc中: session: if (!string .IsNullOrEmpty(find)) //设置 Session["oip"] = "无锡"; ViewBag.oip =Session["oip"]; if (Session["oip"] == null) //获取 Session["oip"] = null; //设为null Session.Timeout = 1; //设置过期时间 <

Extjs 属性控件[转载]

Ext.form.TimeField: 配置项:            maxValue:列表中允许的最大时间            maxText:当时间大于最大值时的错误提示信息            minValue:列表中允许的最小时间            minText:当时间小于最小值时的错误提示信息            increment:两个相邻选项间的时间间隔,默认为15分钟            format:显示格式,默认为“g:i A”.一般使用“H:i:s”    

.NET : 开发ActiveX控件(转载)

我估计有些朋友不清楚ActiveX控件,但这篇博客不是来解释这些概念的.如果你对ActiveX的概念不清楚,请参考这里: http://baike.baidu.com/view/28141.htm 这篇博客也不是讨论ActiveX是否有必要用的,因为这历来也是有些争议的.anyway, 我们这里只是探讨一下如何在.NET中也编写ActiveX控件,我用一个实例记录一下该过程 1. 创建一个类库项目,设置 Comvisible为true,设置AllowPartiallyTrustedCallers