ASP.NET MVC - Html.TextBoxFor生成输入类型=“文本”

时间:2013-01-12 21:18:59

标签: asp.net-mvc razor

我有这样的事情:

@Html.TextBoxFor(model => model.Message)

将消息声明为:

[Required]
[DataType(DataType.MultilineText)]
[Display(Name = "Message", ResourceType = typeof(NameResources))]
[StringLength(256, ErrorMessageResourceName = "MailBoxMessageLengthError", ErrorMessageResourceType = typeof(NameResources), MinimumLength = 2)]
public string Message { get; set; }

仍然,我得到这样的输出:

<input data-val="true" data-val-length="Wiadomość nie może przekraczać 256 znak&amp;#243;w" data-val-length-max="256" data-val-length-min="2" data-val-required="Pole Wiadomość jest wymagane." id="Message" name="Message" type="text" value="" />

当我明确想要那个文本框时,为什么它会给我输入文字?

2 个答案:

答案 0 :(得分:3)

我不明白什么是错的。 <input type="text" />实际上是HTML文本框。 如果您想要多行“文本框”,请改用Html.TextArea。关于SO的良好资源,如何使用它:creating multiline textbox using Html.Helper function

答案 1 :(得分:1)

问题是你正在使用

@Html.TextBoxFor

如mip​​e34所证实,这明确指出你想要一个文本框(单行)而不是文本区域(多行)。

如果您使用过

@Html.EditorFor

然后MVC将查看您的属性并相应地呈现正确的控件 - 如果您使用了EditorFor,那么您已经生成了[DataType(DataType.MultilineText)]生成textarea。

换句话说:始终使用EditorFor +属性或使用正确的xFor并且不要打扰属性。