【问题标题】:Disable validation on a @Html.TextBox in MVC在 MVC 中禁用 @Html.TextBox 验证
【发布时间】:2012-08-03 23:01:09
【问题描述】:

我有一个表单,我想在其中一个 @Html.TextBox 元素上禁用所需的验证。前端如下:

@model Models.NewUser

@using (Html.BeginForm("Register", "Account"))
{
    <div class="field">
        <span class="textOverField absolute em1-2" style="top:6px;left:4px;">Key</span>
        @Html.TextBox("SchoolGroupKey", "", new { @class = "textField" }) 
    </div>
    <div class="field">
        <span class="textOverField absolute em1-2" style="top:6px;left:4px;">Name</span>
         @Html.TextBox("Names", "", new { @class = "textField" }) <div class="absolute validationMessage">@Html.ValidationMessageFor(u => u.Names)</div>
    </div>
    <div class="field">
        <span class="textOverField absolute em1-2" style="top:6px;left:4px;">Last Name</span>
        @Html.TextBox("LastNames", "", new { @class = "textField" }) <div class="absolute validationMessage">@Html.ValidationMessageFor(u => u.LastNames)</div>
    </div>
    <div class="em0-9" style="margin-bottom:20px;">
        <input class="submitButton cursorHand" style="margin-top:10px;" type="submit" value="Registrarme" />
    </div>
}

模型的代码如下:

public class NewUser
{
    [Required(ErrorMessage = "Name required")]
    public string Names { get; set; }

    [Required(ErrorMessage = "Last name required")]
    public string LastNames { get; set; }

    public System.Guid SchoolGroupKey { get; set; }
}

我猜@Html.TextBox 有一个默认验证,即使我没有指定它。有什么办法可以去掉吗,我试过去掉html标签data-val-required和data-val,还是没有结果。

谢谢

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 razor html.textbox


    【解决方案1】:

    Guid 是一个表现为简单类型的结构(就像intDateTime)。因此,它会自动验证。如果您想要解决方法,请将您的属性类型从 Guid 更改为可为空的 Guid?。示例:

    public System.Guid? SchoolGroupKey { get; set; }
    

    当然,当你使用这个属性时,你必须改变位置,通过Value 可以为空类型的属性来访问guid 值。

    如果映射失败,您将不会收到任何验证错误 - 只需 null 值位于您的 SchoolGroupKey 属性内。

    【讨论】:

    • 它不应该抱怨 SchoolGroupKey,因为它没有被标记为必需。它应该只是将一个新的 Guid 传递给操作方法。
    • 您是否曾尝试将错误的值传递给intGuid 等简单类型?当然它会返回一个验证错误..这就是映射这些类型和引用的类型之间的区别..
    • 从没想过它在模型中可以为空,让我检查一下,如果可行,请回复您
    • @triangulito 如果您不想使用Nullable&lt;Guid&gt;,您可以将Guid 捕获为string,然后在控制器或域服务中对其进行验证。
    • @Xander - 是的,但使用Guid?,他不必自己处理Guid 解析..
    猜你喜欢
    • 1970-01-01
    • 2015-09-27
    • 2015-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-04
    • 1970-01-01
    • 2013-02-13
    相关资源
    最近更新 更多