我最近遇到了一個很奇怪的問題,雖然在工作之前只想提及,但我做了很多修改,現在我的應用程序有點搞砸了,所以我不得不重啓一下,但我仍然有這種奇怪的行爲,基本上有兩件事,但我認爲它們是相互關聯的!張貼表格後的構造函數值爲空
所以我有這樣一種模式:
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並設置了值,比如country id,我不知道爲什麼,但是我的代碼在構造函數中總是被解僱,但現在不再了。
值設置和調試我可以看到它!
任何想法是什麼問題?
更新:
這裏是我的編輯模板,這是它的樣子,你可以看到我有validateion消息
<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和客戶端驗證一起工作?
HTML與editorfor看起來是這樣的:
<select name="Location.CountryId" id="Location_CountryId">
HTML中的部分看起來像這樣:
<select name="CountryId" id="CountryId" data-val-required="The Country field is required." data-val="true">
行'if(CountryId!= null)'在構造函數中沒有意義,因爲在構建對象時它總是爲null。你真的想在那裏完成什麼? – Yuck
這是如此奇怪,但在構造函數中我有價值之前,因爲它是httppost,不知何故我得到了價值觀,我可以做一些額外的東西,如填寫另一個列表或其他東西。可以這樣,我使用的是editorFor而不是html.partial? – Alnedru