1
在MVC4應用程序中,我有一些繼承爲視圖模型的業務對象。我想在視圖模型中使用DataAnnotations
,而不是在Business Object中指定它。那可能嗎。模型驗證與繼承自業務對象的視圖模型
Business Objects公司
public class Country
{
[Display(Name = "Country")]
public virtual int CountryId { get; set; }
public virtual string CountryName { get; set; }
public virtual string CountryCode { get; set; }
}
public class State : Country
{
[Display(Name = "State")]
public virtual int StateId { get; set; }
public virtual string StateName { get; set; }
public virtual string StateCode { get; set; }
}
public class City : State
{
public virtual int CityId { get; set; }
[Display(Name = "City")]
public virtual string CityName { get; set; }
}
視圖模型
在這裏,在上面的代碼中,我使用了市物業數據註解。
- 這裏面臨的問題是,即使我沒有這個必需的註釋,表格得到國家和州的驗證,但沒有驗證城市名稱。
- 當我添加所需的註釋時,它仍然只得到國家和州的驗證,但不是城市名稱。
任何想法?
我查看
@using (Html.BeginForm(Actions.AddCity, Controllers.AdminUtility, FormMethod.Post))
{
<div class="alert-error">
@Html.ValidationSummary()
</div>
<div class="row-fluid">
<fieldset class="form-horizontal">
<legend class="header">Add City</legend>
<div class="control-group">
@Html.LabelFor(m => m.City.CountryId, new { @class = "control-label" })
<div class="controls">
@Html.DropDownListFor(m => m.City.CountryId, new SelectList(Model.Countries, "CountryId", "CountryName"),"", new { @class = "chosen", data_placeholder = "Choose Country..." })
</div>
</div>
<div class="control-group">
@Html.LabelFor(m => m.City.StateId, new { @class = "control-label" })
<div class="controls">
@Html.DropDownListFor(m => m.City.StateId,new SelectList(Model.States, "StateId","StateName"), "",new { @class = "chosen", data_placeholder = "Choose State..." })
</div>
</div>
<div class="control-group">
@Html.LabelFor(m => m.City.CityName, new { @class = "control-label" })
<div class="controls">
@Html.TextBoxFor(m => m.City.CityName)
</div>
</div>
<div class="control-group">
<div class="controls">
<input type="submit" />
</div>
</div>
</fieldset>
</div>
}