我相信,这一点已经提出过,但我一直在努力找到所有解决办法,但任何解决办法都没有解决我的问题。 也许,我没有执行。
我正在使用MVC3、raz、 j。
我有一个新的用户登记表。 登记一旦成功,我想在辩证箱中显示成功的信息(对登记类型的不同)。
如果与《示范国家》有任何错误,则是指《示范国家》。 IsValid = 虚假,我想在Validation Summary中显示错误。
View
function OnBegin () { alert( begin ); return $( form ).validate().form(); }
function OnSuccess () { alert( success ); DisplaySucess()}
function OnFailure () { alert( failure ); }
function DisplaySuccess() {
var typeOfRegistration = $( input:radio[name=RegistrationType]:checked ).val();
var msg;
if (typeOfRegistration == 0) {
msg = "You are successfully enrolled for Algebra classes.";
}
if (typeOfRegistration == 1) {
msg = "You are registered with your email address. Someone would contact you with an email.";
}
if (typeOfRegistration == 2) {
msg = "Thank you for filling up this form. One welcome packet would be delivered with in next 15 days";
}
msg = msg.replace(/
/g, <br /> );
$( #dialog ).html(msg);
$( #dialog ).dialog( open );
}
@model 示范法s.Registration示范法
@using (Ajax.BeginForm("NewRegistration", "Account", new AjaxOptions() { OnBegin="OnBegin", OnSuccess = "OnSuccess", OnFailure = "OnFailure" }))
{
@Html.ValidationSummary()
<div>
Register<br />
@Html.RadioButton("RegistrationType ", "0", true) New Algebra class<br />
@Html.RadioButton("RegistrationType ", "1") New user registration by email<br />
@Html.RadioButton("RegistrationType ", "2") New user registration by mailing address<br/>
..some more types
</div>
<div>
…here I display/hide controls based on Registration type selected.
<div>
@Html.LabelFor("UserName")
@Html.TextBox("UserName")</div>
}
Controller
public ActionResult NewRegistration(Registration示范法 model)
{
if (Request.IsAjaxRequest())
{
if (!示范法State.IsValid) {
//Ques: How do I display this in ValidationSummary.
return Json(new object[] { false, "Contains Email Address", 示范法State.GetAllErrors() });
}
else {
if (UserNameIsTaken){
//Ques: This does not show in ValidationSummary
示范法State.Add示范法Error("_FORM", "This username is already taken. Please pick a different username.");
}
}
}
else if (!示范法State.IsValid) { return View(model); }
}
示范法
public class Registration示范法: IValidatableObject
{
[Required] //this gets displayed in ValidationSummary as Client-side validation
public string UserName { get; set; }
.. and all fields here
}
public IEnumerable<ValidationResult> Validate(ValidationContext context)
{
if (!string.IsNullOrEmpty(UserName) && UserName.Contains(EmailAddress)) {
yield return new ValidationResult("Username cannot contain email address", new[] { "UserName" });
}
}
Web.config has
UnobtrusiveJavaScriptEnabled="true" and ClientValidationEnabled="true"
.js files included are
字母缩略语
字母缩略语
字母缩略语
字母缩略语
What am I missing here? Any alternative? Thanks in advance.