Lay*_*way 5 c# asp.net-mvc razor
我在MVC5中有以下一点Razor代码.
<div class="form-group">
<label class="control-label">Name</label>
@Html.TextBoxFor(m => m.Name)
</div>
Run Code Online (Sandbox Code Playgroud)
我现在想确保如果Name有错误,表单组div获取一个has-error类.如何检查Name属性是否有错误?
编辑:根据要求,这是我正在使用的视图的更完整版本.
@model CaptchaMvc.Models.DefaultBuildInfoModel
<div class="form-group">
@Html.LabelFor(m => m.InputElementId, "Retype the characters in the image", new { @class = "control-label", @for = "CaptchaInputText" })
<div class="input-group">
<span style="padding:0;overflow:hidden;" class="input-group-addon">
@Html.Hidden(Model.TokenElementId, Model.TokenValue)
<img style="margin:-12px" id="@Model.ImageElementId" src="@Model.ImageUrl" alt="Captcha Text" />
</span>
@Html.TextBox(Model.InputElementId, null, new Dictionary<string, object>
{
{"data-val", "true"},
{"data-val-required", Model.RequiredMessage},
{"class", "form-control"},
{"style", "width: 200px;"},
{"placeholder", "Retype captcha"}
})
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
这是与CaptchaMvc一起使用的部分视图.它以下列方式包含在表单中.
@Html.Captcha(6, "_Captcha")
Run Code Online (Sandbox Code Playgroud)
一个非常简单的服务器端检查字段上的错误将是:
@ViewData.ModelState.IsValidField("Name")
返回true/false,具体取决于Name字段是否具有与之相关的错误.
编辑:
@{
var nameHasError = Html.ValidationMessageFor(x => x.Name) != null && !string.IsNullOrEmpty(Html.ValidationMessageFor(x => x.Name).ToString());
}
Run Code Online (Sandbox Code Playgroud)
假设您已经在使用 Unobtrusive Validation 插件,您可以使用支持 Bootstrap 的插件来扩展它:
https://github.com/sandrocaseiro/jquery.validate.unobtrusive.bootstrap
或者,通过 NuGet:
https://www.nuget.org/packages/jquery.validate.unobtrusive.bootstrap/
一旦加载,一切都会自动发生。只需确保库以正确的顺序加载即可:
<script src="/path/to/jquery"></script>
<script src="bootstrap.min.js"></script>
<script src="jquery.validate.min.js"></script>
<script src="jquery.validate.unobtrusive.min.js"></script>
<script src="jquery.validate.unobtrusive.bootstrap.min.js"></script>
Run Code Online (Sandbox Code Playgroud)
值得注意的是,只有当您的模型具有正确的注释时,客户端验证才有效;这是一个例子:
public class CommentFormModel
{
public int ID { get; set; }
[Display(Name = "Your name")]
[Required(AllowEmptyStrings = false, ErrorMessage = "This field is required.")]
public string Name { get; set; }
[Display(Name = "Your email? (optional)"), DataType(DataType.EmailAddress)]
public string Email { get; set; }
[AllowHtml]
[Display(Name = "Content")]
[Required(AllowEmptyStrings = false, ErrorMessage = "This field is required.")]
public string Content { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4902 次 |
| 最近记录: |