猿教程 Logo

使用HtmlHelper创建TextBox

阿里云服务器,每月低至7.8元,项目演示即建站必备,比腾讯云更便宜,并且不需学生认证,从此链接购买有效:去购买

在本节中,了解如何使用HtmlHelper在razor视图中生成文本框控件。

HtmlHelper类包括两个扩展方法,它们在Razor视图中创建一个文本框(<input type =“text”>):TextBox()和TextBoxFor()。 TextBox()方法是松散类型的方法,而TextBoxFor()是一个强类型方法。

我们将使用以下学生模型与TextBox()和TextBoxFor()方法。

相关实例:

public class Student
{
    public int StudentId { get; set; }
    [Display(Name="Name")]
    public string StudentName { get; set; }
    public int Age { get; set; }
    public bool isNewlyEnrolled { get; set; }
    public string Password { get; set; }
}

TextBox():

Html.TextBox()方法创建具有指定名称,值和html属性的<input type =“text”>元素。

TextBox()方法签名:

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

TextBox方法有很多重载。 请访问MSDN知道TextBox()方法的所有重载。

TextBox()方法是一个松散类型的方法,因为name参数是一个字符串。 name参数可以是模型对象的属性名称。 它使用textbox绑定指定的属性。 因此,它会在文本框中自动显示model属性的值,反之亦然。

相关实例:

@model Student

@Html.TextBox("StudentName", null, new { @class = "form-control" })

运行结果:

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

在上面的示例中,第一个参数是Student模型类的“StudentName”属性,将被设置为文本框的名称和ID。 第二个参数是要在文本框中显示的值,在上面的示例中为null,因为TextBox()方法将自动在文本框中显示StudentName属性的值。 第三个参数将被设置为类属性。 HtmlAttributes参数是一个对象类型,因此它可以是匿名对象,属性名称将其属性从@符号开始。

您还可以为文本框指定任何名称。 但是,它不会绑定到模型。

相关实例:

@Html.TextBox("myTextBox", "This is value", new { @class = "form-control" })

运行结果:

<input class="form-control" 
        id="myTextBox" 
        name="myTextBox" 
        type="text" 
        value="This is value" />



TextBoxFor:

TextBoxFor帮助方法是一个强类型的扩展方法。 它为使用lambda表达式指定的模型属性生成文本输入元素。 TextBoxFor方法将指定的模型对象属性绑定到输入文本。 因此,它会在文本框中自动显示model属性的值,反之亦然。

TextBoxFor()方法签名:

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

访问MSDN知道TextBoxFor()方法的所有重载。

相关实例:

@model Student

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

运行结果:

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

在上面的例子中,TextBoxFor()方法中的第一个参数是一个lambda表达式,它指定要与文本框绑定的StudentName属性。 它生成一个输入文本元素,其id&name设置为属性名称。 value属性将设置为StudentName属性的值,例如John。 下图显示了上述示例中输入的文本元素。



TextBox和TextBoxFor之间的区别:

  • @ Html.TextBox()是宽松类型的方法,而@ Html.TextBoxFor()是一个强类型(通用)扩展方法。

  • TextBox()需要属性名称作为字符串参数,其中TextBoxFor()需要lambda表达式作为参数。

  • 如果您指定了错误的属性名称,TextBox不会给您编译时错误。 它会抛出运行时异常。

  • TextBoxFor是通用方法,所以如果您指定了错误的属性名称或属性名称更改,它将给您编译时错误。 (提供的视图不是在运行时编译。)

阿里云服务器,每月低至7.8元,项目演示即建站必备,比腾讯云更便宜,并且不需学生认证,从此链接购买有效: 去购买


版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/mvc/mvc-helper-textbox.html