下面通过HtmlHelper帮助类,创建文本框。

首先新建一个实体类,做为下面的例子:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace MVCRestartlearnning.Models
{
public class Student
{
/// <summary>
/// 学号
/// </summary>
public int StudentId { get; set; } /// <summary>
/// 姓名
/// </summary>
public string StudentName { get; set; } /// <summary>
/// 年龄
/// </summary>
public int Age { get; set; } /// <summary>
/// 是否新入学
/// </summary>
public bool isNewlyEnrolled { get; set; } /// <summary>
/// 密码
/// </summary>
public string Password { get; set; } }
}

TextBox();

Html.TextBox()方法,创建文本框【<input type="text"/>】,并且可以带上name,value和html属性;

TextBox方法的签名:

MvcHtmlString Html.TextBox(string name, string value, object htmlAttributes)

TextBox method has many overloads. Please visit MSDN to know all the overloads of TextBox() method.

The TextBox() method is a loosely typed method because name parameter is a string. The name parameter can be a property name of model object. It binds specified property with textbox. So it automatically displays a value of the model property in a textbox and visa-versa.

Example:例子:

@Html.TextBox("student", null, new { @class="Myclass"})

生成:

 <input class="Myclass" id="student" name="student" type="text" value="" />

上面的例子中,第一个参数“student”,被设置成文本框的id属性和name属性的值,第一个参数,是用来显示在文本框里的值,第三个参数,被用来设置文本框的class属性了,HtmlAttrbutes是一个对象类型,它是一个匿名对象,属性名字都会以一个@符号开始;

上面的例子中,第一个参数,你也可以换个名字,不用“student”,不过,不会绑定到模型中;

  @Html.TextBox("myTextBox", "hello,TextBox", new { @class="myclasses"})

生成:

背后代码:

<input class="myclasses" id="myTextBox" name="myTextBox" type="text" value="hello,TextBox" />

TextBoxFor();

TextBoxFor方法是一个强类型的扩展方法,它使用lambda表达式,为模型生成文本框;

TextBoxFor方法,绑定特定的模型属性到文本框中,所以会自动显示属性的值到文本框中;

签名:

MvcHtmlString TextBoxFor(Expression<Func<TModel,TValue>> expression, object htmlAttributes)

Visit MSDN to know all the overloads of TextBoxFor() method.

Example:

@Html.TextBoxFor(m => m.StudentName, new { @class="form-control"})

生成:

 <input class="form-control" id="StudentName" name="StudentName" type="text" value="" />

效果图:

在上面的例子中,TextBoxFor第一个参数是一个lambda表达式,指定这个StudentName属性,并绑定到文本框中,以其名称生成了id和name属性的值,如果StudentName属性值是Tom ,那么,文本框中就会显示Tom;

Difference between TextBox and TextBoxFor:

  • @Html.TextBox() is loosely typed method whereas @Html.TextBoxFor() is a strongly typed (generic) extension method.
  • TextBox是松类型的,而TextBoxFor是强类型的扩展方法;
  • TextBox() requires property name as string parameter where as TextBoxFor() requires lambda expression as a parameter.
  • TextBox需要属性名字作为string类型的参数,然而TextBoxFor需要lambda表达式作为参数;
  • TextBox doesn't give you compile time error if you have specified wrong property name. It will throw run time exception.
  • 如果你指定了一个错误的属性名字,TextBox不会报编译错误,但是会在运行的时候,报运行错误;
  • TextBoxFor is generic method so it will give you compile time error if you have specified wrong property name or property name changes. (Provided view is not compile at run time. )
  • TextBoxFor是一个泛型方法,它会给你一个编译的错误,如果你指定的属性名字是错误的,或者属性的名字发生了改变。(所提供的视图,在运行的时候,不会编译)

使用Htmlhelper,创建文本框TextBox的更多相关文章

  1. ASP.NET 动态创建文本框 TextBox (add TextBox to page dynamically)

    下面的函数每执行一次就生成一个TextBox(其实是<input type="Text">)    var i=0;     function changeIt()   ...

  2. word中创建文本框

    word中创建文本框         在插入中点击"文本框"选项卡,例如以下图所看到的:        手工加入自己想要的文本框格式,然后选择所创建的文本框,在工具栏处会发现多了一 ...

  3. HTML创建文本框的3种方式

    我的第一个随笔,记录主要用来整理学习的知识点 1.input 创建单行文本框 <input type="text" size="10" maxlength ...

  4. C#控制文本框(TextBox)只能输入正数,负数,小数

    由于项目需要,需要写一个TextBox文本框,此文本框需要满足:只能输入正数,负数和小数.比如:3,0.3,-4,-0.4等等.        在网上找了许多正则表达式都不好用,由于本人又对正则表达式 ...

  5. [原创]C#应用WindowsApi实现查找(FindWindowEx)文本框(TextBox、TextEdit)。

    /// <summary> /// 获取文本框控件 /// </summary> /// <param name="hwnd">文本框所在父窗口 ...

  6. C#.NET常见问题(FAQ)-如何让文本框textbox内容限制为数字

    //限制文本框的输入 private void txtQuestionScore_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyCha ...

  7. 保留password模式文本框textbox内的数据不丢失。

    在asp.net 2.0环境下,使用textbox,提交到服务器再传回,如果textbox是password模式的,那么textbox内的密码(星号),就没有了! protected override ...

  8. easyUI文本框textbox笔记

    知识点: 1.图标位置 Icon Align属性,有left和right两个: 2.textbox的setvalue方法,getvalue方法. <div style="margin: ...

  9. asp.net小技巧:保留password模式文本框textbox内的数据不丢失。

    在asp.net 2.0环境下,使用textbox,提交到服务器再传回,如果textbox是password模式的,那么textbox内的密码(星号.圆点),就没有了! 一个可行的做法是 : prot ...

随机推荐

  1. EasyUI-Tooltip(提示框)学习

    引子: if($("#BLUETOOTH_a")){ $("#BLUETOOTH_a").tooltip({ position: 'right', conten ...

  2. CF 463D Gargari and Permutations [dp]

    给出一个长为n的数列的k个排列(1 ≤ n ≤ 1000; 2 ≤ k ≤ 5).求这个k个数列的最长公共子序列的长度 dp[i]=max{dp[j]+1,where j<i 且j,i相应的字符 ...

  3. Swift学习笔记-1

    Apple官方开发手冊地址: https://developer.apple.com/library/prerelease/ios/referencelibrary/GettingStarted/La ...

  4. Node.js中的HTTPS示例

      需要openssl的支持, openssl本身不提供windows的安装程序,可以按照如下的步骤进行安装: (参考https://conetrix.com/Blog/how-to-install- ...

  5. JNDI配置c3p0连接池

    JNDI是什么呢? 就是java命名和文件夹接口.是SUN公司提供的一种标准的Java命名系统接口. 不好理解?简单说呢.他就是一个资源,放在tomcat里面的一个资源,今天我们就把数据库连接池放到t ...

  6. C#类似版本号有多个分割符可以产生的排列组合,类似版本号比较

    我采用asp.net进行演示 送给有缘人吧,可以获得类似版本号的功能,也可以对比两个版本号,我这里是其他需要用逗号分割的 using System; public partial class _Def ...

  7. 翻译记忆软件-塔多思TRADO经典教程_4

    SDL Trados是世界上最流行的计算机辅助翻译(CAT) 软件,在全球拥有20万多客户,全球500强企业有超过90%的公司都在使用SDL Trados来为日常的本地化翻译工作服务.我们的使命是以强 ...

  8. VC操作MPP文件

    1.背景简介 因需要对Office系列进行程序操作,特需要使用COM编程. Microsoft Project生成进度计划,office家族软件,文件后缀为.mpp. 具体信息见维基百科http:// ...

  9. IDEA开发web程序配置Tomcat

    1.下载zip版的Tomcat 7,并解压2.在IDEA中配置Tomcat 7 在idea中的Settings(Ctrl+Alt+s)(或者点击图标 ) 弹出窗口左上过滤栏中输入“Applicatio ...

  10. 【CMS】DedeCMS Error: (PHP 5.3 and above) Please set 'request_order' ini value to include C,G and P (recommended: 'CGP') in php.ini

    DedeCMS Error: (PHP 5.3 and above) Please set 'request_order' ini value to include C,G and P (recomm ...