view如何从action中取得数据和 Html辅助方法

方式:1使用弱类型取,2,使用强类型,两者的差别在于view页面最上方声明的方式

如果使用弱类型接受来自控制器的数据,在view页面里完全不需要有任何的生命,数据可以从ViewData,ViewBag,TempData取得,在页面中可以通过@Model属性, 取得从Action传来的ViewData.Model数据模型。但是@Model数据类型将会是object,所以算是弱类型的传值方式。

如果使用强类型的话,必须在view页面第一行使用@model关键字引入一个view页面专用的数据模型

eg:

@model MvcApplication5.Models.LoginModel

@ViewBag.Title

使用这种方式有助于提升view的开发效率,因为可以使用智能提示功能。

-------------------------------

html helper就是用来辅助产生的HTML之用,在开发view的时候会面对许多html标签,处理这些会显得繁琐,为了降低view的复杂度,可以使用html辅助方法帮助产生一些html标签或内容,因这些html标签都有固定标准的写法,所以将其包装成html辅助方法,可让view开发更快速,也可以避免不必要的语法错误。

1,输出超链接

@Html.ActionLink("aaa","ActionName")

预设会链接到ActionName这个名称的action,由于没有指定控制器名称,因此指向的控制器将会与这次检视页面所属的控制器一样。

@Html.ActionLink("aaa","ActionName",“ControllerName”)

链接到指定控制器下的action

@Html.ActionLink("aaa","ActionName",new {id=123,page=5})

设定额外的RouteValue,可以在第三个参数传入object型别的数据

@Html.ActionLink("aaa","ActionName",null,new {@class="btnLink"})

当需要传入超链接额外的HTML属性时,可以将参数加在第四个参数上

注意:由于html标签里在套用css样式类别时会用到class属性名称,不过,在c#里class属于关键字并无法使用为匿名物件的属性,因此若要将其看为属性,则要在前面添加@跳转符号,这样才会正确编译。

此外,如果输出的html属性包含减号,如data-value属性,设定c#属性名称时必须将减号改成下划线替代,最后输出html属性时会自动变成减号。

使用Html.ActionLink()时,第一个参数为超链接的显示文字,此参数不可以输入空字符串,空白字符串或者null值,否则就会抛出TheValue cannot be null or empty.的例外。

但是如果我们要设定完全没有链接内容的时候,一般会是用在输出图片为主的超链接上,因为设计师想设计一个包含超链接的图片按钮,因此图片选择用a标签来输出,并通过css加上一个背景图

比如这种<标签a href="/home/index" class="lnkButton"></标签a>这样的格式输出是没法利用Html.ActionLink来做的,必须该用@Url.Action辅助方法才行

比如<标签a href="@Url.Action("ActionName")" class="lnkButton"></标签a>

@Html.RouteLink("回会员专区",new {type="default"})

@Html.RouteLink("回会员专区",new {type="default"},new {@class="back"})

输出结果如下

<标签a href="/Account/Login?type=default" class="lnkButton">回会员专区</标签a>

<标签a  class="back"  href="/Account/Login?type=default" class="lnkButton">回会员专区</标签a>

还可以指定路由表RouteTable中的路由名称,然后再加上额外的RouteValue参数

@Html.RouteLink("回会员专区",“Member”,new {})

@Html.RouteLink("回会员专区",“Member”,new {type="default"})

@Html.RouteLink("回会员专区",“Member”,new {type="default"},new {@class="back"})

2,输出表单

》》》》产生表单元素

eg:

@using(Html.BeginForm()){

<标签p>账号:@Html.TextBox("account")</标签p>

<标签p>密码:@Html.Password("password")</标签p>

}

输出的内容回是

<表单form action="/account/Login" method="post">

<标签p>账号:<标签input id="account" name ="account" type="text" value=""   /></标签p>

<标签p>密码:<标签input id="password" name ="password" type="password" value=""   /></标签p>

</表单form>

注意:当然我们也可以不适用@using,这样是可以确保表单标签会在using结尾输出表单结束标签,当然也可以在末尾使用@Html.EndForm()来关闭这个标签。但是beginform没法直接通过@输出,必须以c#语句的方式来执行。

eg:

@{Html.BeginForm("Abount","Home");}

@Html.TextArea("Date")

@Html.TextArea("MeMO")

<标签input type="submit"/>

@{Html.EndForm();}

@Html.BeginForm()预设输出的method是post,如果要设定get可以输入第三个参数

@using(Html.BeginForm(”Search","Home",FormMethod.Get)){

<标签p>账号:@Html.TextBox("account")</标签p>

}

如果要在表单上做上传功能,就必须在表单标签加一个enctype属性,且内容必须设定为multipe/form-data

,要通过Html.BeginForm辅助来新增额外的属性必须加上第四个参数,并传入一个匿名物件。

eg:

@using(Html.BeginForm("Upload","File",FormMethod.Post, new {enctype="multipart/form-data"})){

@Html.TextBox("File1","",new {type="file",size="25"})

<标签input type="submit"/>

}

输出内容是

<表单form action="/File/Upload" enctype="multipart/form-data" method="post">

<标签input type="file" id="File1"  name="File1" size="25" value=""/>

<标签input type="submit"/>

</表单form>

注意:html辅助方法并没有File方法,因此必须用TextBox来代替,并传入第三个参数将内建的type属性换成file即可。

拓展:如果要将表单送出的目标网址限定在特定的路由规则,可以用html.BeginRouteForm辅助方法指定路由名称eg:

@using("Inquiry",new {action="Index"}){}

》》》》》》模拟各种http动词(暂时没用到,以后再补充)

》》》》》》常用表单输入栏位

@Html.Password()用于产生密码栏位,

@Html.Hidden()用于产生隐藏栏位,

@Html.TextArea()用于产生多行文字的输入框,使用方式与html.textbox类似,但拥有较多的多载可以指定rows和column的值

@Html.DropDownList()用于产生下拉框

eg:@Html。DropDownList("List",ViewData["List"]as SelectList,"请选择")

@Html.listBox()用于产生多选的下拉式菜单,和上面的用法相似。

@Html.RadioButton()用于产生单选按钮(name,value,true[false])

@Html.CheckBox()用于产生选取方块,name,value

》》》》》》使用强类型别辅助方法

在原先的名称最后加上For,eg @Html.TextBoxFor()或@Html.LabelFor()这样有很多优点,不过最重要的是在view页面的最上方一定要用@model定义出这个页面的参考数据模型,如果没有声明的话就无法正常使用强类型辅助方法

eg:@Html.LabelFor(model => model.Name)

@Html.ValidationSummary()输出表单验证失败时的错误信息

@Html.ValidationMessageFor()用来输出当这个栏位发生输入验证错误时应显示的信息内容。

时间: 2024-10-02 13:03:15

view如何从action中取得数据和 Html辅助方法的相关文章

MVC4笔记 view如何从action中取得数据

方式:1使用弱类型取,2,使用强类型,两者的差别在于view页面最上方声明的方式 如果使用弱类型接受来自控制器的数据,在view页面里完全不需要有任何的生命,数据可以从ViewData,ViewBag,TempData取得,在页面中可以通过@Model属性, 取得从Action传来的ViewData.Model数据模型.但是@Model数据类型将会是object,所以算是弱类型的传值方式. 如果使用强类型的话,必须在view页面第一行使用@model关键字引入一个view页面专用的数据模型 eg

View从Action中获得数据和html helper function(转载)

? 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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86

MySQL中删除数据的两种方法

转自:http://blog.csdn.net/apache6/article/details/2778878 在MySQL中有两种方法可以删除数据,一种是DELETE语句,另一种是TRUNCATE TABLE语句. DELETE语句可以通过WHERE对要删除的记录进行选择.而使用TRUNCATE TABLE将删除表中的所有记录.因此,DELETE语句更灵活. 如果要清空表中的所有记录,可以使用下面的两种方法: DELETE FROM table1 TRUNCATE TABLE table1 其

关于iOS去除数组中重复数据的几种方法

关于iOS去除数组中重复数据的几种方法 在工作工程中我们不必要会遇到,在数组中有重复数据的时候,如何去除重复的数据呢? 第一种:利用NSDictionary的AllKeys(AllValues)方法 可以将NSArray中的元素存入一个字典,然后利用AllKeys或者AllValues取得字典的所有键或值,这些键或值都是去重的.代码: NSArray *dataArray = @[@"2014-04-01",@"2014-04-02",@"2014-04-

ASP.NET MVC中如何以ajax的方式在View和Action中传递数据

前言:写这篇随笔的时候,在url上漏写了斜线,找了好久错误,整个人都很不好.#我是猪系列 背景:之前介绍过一篇如何构建ASP.NET MVC4&JQuery&AJax&JSon示例,这一篇单独讲解如何在View和Action间传递并处理数据. 1,前台HTML代码: 1 <div> 2 <button type="button" id="btn">从视图向控制器中传递数据</button> 3 <p

从列表中提取数据的两种方法

从列表中提取数据除了循环外还有两种方法:过滤,列表解析式: #!/usr/bin/env python #coding:utf-8 #@Author:Andy # 生成一个随机列表:并选出其中的两大于零的数 from random import randint data = [randint(-10, 10) for i in range(1, 10)] print(data) # method 1 print("filter method:", list(filter(lambda

SQL Server中迁移数据的几种方法

1.通过工具"DTS"的设计器进行导入或者导出 DTS的设计器功能强大,支持多任务,也是可视化界面,容易操作,但知道的人一般不 多,如果只是进行SQL Server数据库中部分表的移动,用这种方法最好,当然,也可以进行全部表的移动.在SQL Server Enterprise Manager中,展开服务器左边的+,选择数据库,右击,选择All tasks/Import Data...(或All tasks/Export Data...),进入向导模式,按提示一步一步走就行了,里面分得很

关于MySQL中添加数据的两种方法

下面介绍两种执行SQL命令的方法,并作出相应地总结,第一种介绍一种常规用法,下面进行做简要地分析,首先我们需要执行打开数据库操作首先创建一个MySqlConnection对象,在其构造函数中传入一个连接字符串,然后执行Open操作打开数据库,在正确打开数据库之后我们才能进行相关的动作,在ExecuteSQL这个函数中, 我们执行MySqlCommand myCmd = new MySqlCommand(CmdString, conn),从而创建MySqlCommand对象,其中传入的两个参数分别

MVC 中与链接相关的辅助方法(Html.ActionLink,Html.RouteLink , Url.Action , Url.Content ,Url.RouteUrl)

Html.ActionLink 与 Url.Action  1.两者者是根据给定的Controller,Action 生成链接, 但是Html.ActionLink 返回的是MvcHtmlString的一个带<a>标签的超链接, 而Url.Action返回的是string,一个根本Controller,Action生成的URL地址, 比Html.ActionLink少了<a>标签 Html.RouteLink 与 Url.RouteUrl 两者都是可以指定由哪一个路由来生成Url,