【问题标题】:Problems with the [DataType] Annotation[DataType] 注解的问题
【发布时间】:2014-02-17 02:19:10
【问题描述】:

这是我在模型中的代码:

[Required(ErrorMessage = "The url is required")]
[Url(ErrorMessage = "Invalid URL")]
public String Url { get; set; }

这是我在视图中的代码:

<div class="input-group">
    <span class="input-group-addon glyphicon glyphicon-link"></span>
    @Html.TextBoxFor(m => m.Url, new { @class = "form-control", placeholder = "Feed URL" })
    @Html.ValidationMessageFor(m => m.Url)
</div>*emphasized text*

问题是 Url 注释,应该用属性 type="url"

渲染输入

这是我得到的:

<input class="form-control" data-val="true" data-val-required="The url is required" data-val-url="Invalid URL" id="Url" name="Url" placeholder="Feed URL" type="text" value="">

这是我应该得到的:

<input class="form-control" data-val="true" data-val-required="The url is required" data-val-url="Invalid URL" id="Url" name="Url" placeholder="Feed URL" type="url" value="">

第一个的类型是“text”,而我应该得到的输入是“url”。

【问题讨论】:

  • 你确定你使用的是 MVC 4 吗?

标签: c# asp.net asp.net-mvc-4 annotations data-annotations


【解决方案1】:

您可以手动设置类型,即

new { @class= "form-control", placeholder = "Feed URL", type="url" }

因为您使用的是 Html.TextBoxFor,它会将类型呈现为文本。

您始终可以使用 Html.EditorFor,然后创建自己的编辑器模板“url”并在 viewdata 中传递所需的 html 属性。

【讨论】:

  • 哦,这很有用!我真的很感谢。现在我想我要将类型放入匿名对象中。您认为更常见的是 EditorFor 还是 TextBoxFor ?
  • 很高兴我能帮上忙!对于这种情况,我个人更喜欢使用 TextBoxFor,因为我可以轻松地指定 html 属性。我通常将 EditorFor 用于需要使用自定义 EditorTemplates 的更复杂的情况
猜你喜欢
  • 2010-10-15
  • 2011-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多