formElement是空在MVC中的客户端验证
-
24-09-2019 - |
题
我得到一个“formElement为空”试图使用MVC客户端验证时。 没有人有任何想法,以什么可能是这个问题?
Sys.Mvc.NumberValidator.create =函数(规则){返回Function.createDelegate(新Sys.Mvc.NumberValidator(),新Sys.Mvc.NumberValidator()验证。);}
下面是我的模型:
public class EmailViewModel
{
///
/// The user's current email address
///
public string CurrentEmailAddress { get; set; }
///
/// User's new email address
///
[EmailAddress( IsRequired = true, ErrorMessage = "Please enter a valid email address." )]
public string NewEmailAddress { get; set; }
///
/// User's confirmed new email address
///
[EmailAddress( IsRequired = true, ErrorMessage = "Please enter a valid email address. Your emails do not match." )]
public string ConfirmNewEmailAddress { get; set; }
public EmailViewModel()
{
CurrentEmailAddress = "Michael.l.paterson@gmail.com";
NewEmailAddress = string.Empty;
ConfirmNewEmailAddress = string.Empty;
}
}
这是从主网页的脚本引用:
MicrosoftAjax.js结果 MicrosoftMvcAjax.js结果 MicrosoftMvcValidation.js
我不知道,如果这一切都将出现,但这里是视图代码:
<script src="../../Scripts/MicrosoftAjax.js" type="text/javascript"></script>
<script src="../../Scripts/MicrosoftMvcAjax.js" type="text/javascript"></script>
<script src="../../Scripts/MicrosoftMvcValidation.js" type="text/javascript"></script>
<%= Html.ValidationSummary( true, "There was an error when processing your request" ) %>
<% Html.EnableClientValidation(); %>
<% Html.BeginForm(); %>
<div class="SecureForm_Wrapper">
<label class="Styled">
<img alt="Reqired" src="../../Content/Images/Misc/required.png" />
New E-Mail</label>
<div class="TheField">
<%= Html.TextBoxFor( m => m.NewEmailAddress, new { id = "NewEmailAddress", name = "NewEmailAddress", @class = "CommonTextBox" } ) %>
<%= Html.ValidationMessageFor( m => m.NewEmailAddress ) %>
</div>
</div>
<div class="SecureForm_Wrapper">
<label class="Styled">
<img alt="Reqired" src="../../Content/Images/Misc/required.png" />
Confirm New E-Mail</label>
<div class="TheField">
<%= Html.TextBoxFor( m => m.ConfirmNewEmailAddress, new { id = "ConfirmNewEmailAddress", name = "ConfirmNewEmailAddress", @class = "CommonTextBox" } )%>
<%= Html.ValidationMessageFor( m => m.ConfirmNewEmailAddress ) %>
</div>
</div>
<div id="BottomButtonContainer">
<a class="button" href="#" id="SubmitButton" style="font-weight: bold;"><span>Save</span></a>
<a class="button" href="#" onclick="this.blur(); return false;"><span>Cancel</span>
</a>
</div>
<% Html.EndForm(); %>
这里是
没有任何人有任何想法,以什么可能是这个问题?
解决方案
当我改变使用必需的属性(和删除IsRequired属性)您的视图模型,视图模型和视图似乎验证对我很好。我也不得不增加一个提交按钮到表单中。也许问题出在你的执行EmailAddress的验证呢?
您可能要更加小心你的问题的格式,因为它使得它有点难以解析。作为参考,这里是视图模型和清理查看我使用的作品。
查看型号:
public class EmailViewModel
{
///
/// The user's current email address
///
public string CurrentEmailAddress { get; set; }
///
/// User's new email address
///
[Required(ErrorMessage = "Please enter a valid email address.")]
public string NewEmailAddress { get; set; }
///
/// User's confirmed new email address
///
[Required(ErrorMessage = "Please enter a valid email address. Your emails do not match.")]
public string ConfirmNewEmailAddress { get; set; }
public EmailViewModel()
{
CurrentEmailAddress = "Michael.l.paterson@gmail.com";
NewEmailAddress = string.Empty;
ConfirmNewEmailAddress = string.Empty;
}
}
查看:
<%= Html.ValidationSummary( true, "There was an error when processing your request" ) %>
<% Html.EnableClientValidation(); %>
<% using (Html.BeginForm())
{ %>
New E-Mail
<%= Html.TextBoxFor(m => m.NewEmailAddress)%>
<%= Html.ValidationMessageFor(m => m.NewEmailAddress)%>
<br />
Confirm New E-Mail
<%= Html.TextBoxFor(m => m.ConfirmNewEmailAddress)%>
<%= Html.ValidationMessageFor(m => m.ConfirmNewEmailAddress)%>
<br />
<input type="submit" value="Submit" />
<% } %>
<script src="<%= ResolveUrl("~/Scripts/MicrosoftAjax.js") %>" type="text/javascript" language="javascript"></script>
<script src="<%= ResolveUrl("~/Scripts/MicrosoftMvcAjax.js") %>" type="text/javascript" language="javascript"></script>
<script src="<%= ResolveUrl("~/Scripts/MicrosoftMvcValidation.js") %>" type="text/javascript" language="javascript"></script>
不隶属于 StackOverflow