【发布时间】:2017-10-25 18:48:01
【问题描述】:
我即将完成我的第一个 MVC Web 应用程序,我非常感谢它教给我的东西,但我仍然无法弄清楚一些小问题。
-
验证 所以在我的模型中我得到了这个:
[Required(ErrorMessage = "The email address is required")] [EmailAddress(ErrorMessage = "Invalid Email Address")] public string EmailAddress { get; set; }
但问题是,没有一个注释是正确的。 https://i.imgur.com/WG9JBQ1.jpg 它显示一个我没有指定的错误(看起来更好)。但主要问题是它从不检查该字段是否为空(或者有 5+ 个字符,甚至更好)。 我得到了 jquery.validate.js、jquery.validate.unobtrusive.js 和 ClientValidationEnabled、UnobtrusiveJavaScriptEnabled 都是真的。我无法弄清楚我在这里错过了什么。其他类型的字段也这样做。 我的控制器操作如下所示:
[HttpPost]
public ActionResult SaveEmail(EmailModel model)
{
if (ModelState.IsValid)
{
int x = 0;
string[] stringedIds = model.ParseIds.Split('/');
model.Id = Int32.TryParse(stringedIds[0], out x) ? x : 0;
model.Contact = Int32.TryParse(stringedIds[1], out x)? contactsManager.GetById(x) : null;
model.EmailType = emailTypesManager.GetById(model.EmailType.Id);
if (model.Contact != null)
{
EmailManager.Save(model);
}
}
return RedirectToAction("Details", "Contact",new { @id = model.Contact.Id } );
}
-
我得到了这个用于选择电子邮件类型的下拉菜单。而且它需要可以为空(您可以选择它但不必这样做)。我不知道如何使这项工作。使用当前数据,它就像一个魅力,但它不能为空。我不知道如何将新元素添加到列表中(在列表中的第一位)并使其为“空”。 这就是填充它的内容:
@{ EmailTypes emailTypesManager = new EmailTypes(); IEnumerable<EmailTypeModel> emailTypes = emailTypesManager.GetAll().Select(x => (EmailTypeModel)x); } @Html.DropDownListFor(x => x.EmailType.Id, new SelectList(emailTypes, "Id", "Name", Model.EmailType.Id), new { @class = "no-borders-drop" }) @Html.ValidationMessageFor(x => x.EmailType.Name)
我想改成..
@{
EmailTypes emailTypesManager = new EmailTypes();
IEnumerable<EmailTypeModel> emailTypes = emailTypesManager.GetAll().Select(x => (EmailTypeModel)x);
var list = new SelectList(emailTypes, "Id", "Name", Model.EmailType.Id);
}
@Html.DropDownListFor(x => x.EmailType.Id, list,"None" , new { @class = "no-borders-drop" })
@Html.ValidationMessageFor(x => x.EmailType.Name)
..让我更近了一步。
谁能指出我? 谢谢(:
更新 1: 我刚刚意识到我在 jQuery 本身之前调用了 jquery.validation。这样就解决了我的问题。验证现在有效,但如果不是 jquery.validation,我仍然想知道图片上的验证是什么。
【问题讨论】:
-
能不能给出完整的代码看懂..
-
对于第一个问题,输入元素应该是 type="text" 以进行模型验证......
-
我刚刚更新了我的问题。验证现在有效:D
-
图片是 HTML-5 验证错误。作为旁注,
@Html.ValidationMessageFor(x => x.EmailType.Name)没有任何意义,因为您绑定到EmailType.Id -
是的,我删除了它。谢谢。
标签: c# asp.net-mvc validation