【发布时间】:2011-05-23 15:11:51
【问题描述】:
我正在使用当前版本的 ASP.net MVC 来显示一个表单。验证由包含的 jQuery Validate 负责。客户端验证正在工作,但是,服务器端验证没有。相反,表单值被发送回服务器进行验证,但 JS 验证代码忽略了服务器的回答。
(简化的)表单如下所示:
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@using (Html.BeginForm("Invite", "Admin"))
{
@Html.ValidationSummary(true)
<ul class="griditem-list">
<li>
<div class="editor-label">@Html.LabelFor(m => m.UserEmail)</div>
<div class="editor-field">@Html.EditorFor(m => m.UserEmail)</div>
@Html.ValidationMessageFor(m => m.UserEmail)
</li>
</ul>
<div class="actions">
<input class="button" type="submit" value="Add" />
</div>
}
客户端 javascript 正确检查无效的电子邮件地址并将电子邮件地址发送回服务器以进行进一步验证。服务器回复正确回复(此处:“此电子邮件地址已被占用”):
该值不会以任何方式显示,但是,无论是在编辑器字段附近还是其他地方都不会显示。这可能是什么原因?
编辑:
这是我正在使用的模型:
public class InvitationUser
{
[Required(ErrorMessage = "{0} darf nicht leer sein.")]
[Email(ErrorMessage = "Die Emailadresse ist ungültig")]
[Remote("EmployeeExists", "Admin", ErrorMessage = "Der angegebene User wurde bereits eingeladen.")]
[Display(Name="E-Mail")]
public string UserEmail { get; set; }
[Required(ErrorMessage = "{0} darf nicht leer sein.")]
[Display(Name = "Vorname")]
public string FirstName { get; set; }
[Required(ErrorMessage = "{0} darf nicht leer sein.")]
[Display(Name = "Nachname")]
public string LastName { get; set; }
public IEnumerable<AdminUserRight> Rights { get; set; }
}
这里是EmployeeExists,它回发“Email address already exists”的正确结果:
public JsonResult EmployeeExists(string UserEmail)
{
Guid companyId = AzManPrincipal.Current.Employee.BrokerCompany.ID;
var container = new ModelContainer();
if (container.BrokerEmployeeSet.FirstOrDefault(m => m.Email == UserEmail && m.BrokerCompany.ID == companyId) == null &&
container.BrokerInvitationSet.FirstOrDefault(m => m.Email == UserEmail) == null)
return Json(true, JsonRequestBehavior.AllowGet);
string errorMessage = String.Format(CultureInfo.InvariantCulture, "{0} ist bereits registriert.", UserEmail);
return Json(errorMessage, JsonRequestBehavior.AllowGet);
}
这是呈现表单的Index 控制器:
public ActionResult Index()
{
InvitationUser newUser = AdminUserService.CreateInvitationUser();
return View(newUser);
}
【问题讨论】:
标签: jquery asp.net-mvc