我最近遇到了一个非常奇怪的问题,虽然只是想在它起作用之前提一下,但我做了很多更改,现在我的应用程序有点搞砸了,所以我不得不重新启动一点,但我仍然有这个奇怪的行为,基本上有两件事,但我认为它们是相互关联的!
所以我有这种模型:
public class MyModel
{
[Required]
public string Username{ get; set; }
public UserLocation Location { get; set; }
}
用户位置是:
public class UserLocation
{
public UserLocation()
{
if (CountryId != null)
{
//do something
}
}
[Required]
public string CountryId { get; set; }
...
}
所以在我看来,我用编辑器模板正确构建了这个,当没有填写任何内容时,它直接显示错误,但现在,它不怎么错误!但在此之前!
其次,当我点击一个按钮时,触发了一个httppost方法,首先调用了构造函数UserLocation,但是填写了countryID,它显示为空!!!以前的情况并非如此,在我搞砸之前,构造函数被调用 httppost 并设置了值,比如国家 ID,我不知道为什么,但我在构造函数中的代码总是被触发,但不再是了。
值已设置,在调试中我可以看到它!
知道出了什么问题吗?
更新:
这是我的编辑器模板,这就是它的样子,你可以看到我有验证消息
<tr>
<td class="editor-label">
@Html.LabelFor(m => m.CountryId)
</td>
<td class="editor-field">
@Html.DropDownListFor(m => m.CountryId, Model.Countries, "---select--", null)
</td>
<td>
@Html.ValidationMessageFor(m => m.CountryId)
</td>
</tr>
更新 2:关于验证
所以我有@Html.EditorFor ...并且它没有验证客户端,当我将它更改为@Html.Partial ...时,一切都相同且完整,它开始验证客户端,为什么会出现这个问题?任何想法以及如何使其与 editorfor 和客户端验证一起使用?
带有 editorfor 的 HTML 如下所示:
<select name="Location.CountryId" id="Location_CountryId">
带有部分的 Html 如下所示:
<select name="CountryId" id="CountryId" data-val-required="The Country field is required." data-val="true">