我对 MVC 还是很陌生,所以请耐心等待。
我有一个包含部分视图的简单视图。在那个部分视图模型中,我有这样的验证注释:
public class LocationViewModel
{
[Display(Name = "Area")]
[UIHint("DropDownList")]
public int? AreaId { get; set; }
public string Area { get; set; }
public IEnumerable<AWS.DTO.Lookup> Areas { get; set; }
[Display(Name = "Establishment")]
[UIHint("DropDownList")]
public int? EstablishmentId { get; set; }
public string Establishment { get; set; }
public IEnumerable<AWS.DTO.Lookup> Establishments { get; set; }
[Display(Name = "Property")]
[UIHint("DropDownList")]
[Required(ErrorMessage = "Category is required.")]
public int PropertyId { get; set; }
public string Property { get; set; }
public IEnumerable<AWS.DTO.Lookup> Properties { get; set; }
}
部分观点:
@model AWS.PL.ViewModels.LocationViewModel
<script type="text/javascript">
function getSEATs(area) {
$.ajax({
url: "@Url.Action("SelectSEATs", "Location")",
data: { areaId: area },
dataType: "json",
type: "POST",
error: function () {
alert("An error occurred.");
},
success: function (data) {
var items = "";
$.each(data, function (i, item) {
items += "<option value=\"" + item.Value + "\">" + item.Text + "</option>";
});
$("#SEATId").html(items);
}
});
}
function getEstablishments(seat) {
$.ajax({
url: "@Url.Action("SelectEstablishments", "Location")",
data: { seatId: seat },
dataType: "json",
type: "POST",
error: function () {
alert("An error occurred.");
},
success: function (data) {
var items = "";
$.each(data, function (i, item) {
items += "<option value=\"" + item.Value + "\">" + item.Text + "</option>";
});
$("#EstablishmentId").html(items);
}
});
}
function getProperties(estab) {
$.ajax({
url: "@Url.Action("SelectProperties", "Location")",
data: { estabId: estab },
dataType: "json",
type: "POST",
error: function () {
alert("An error occurred.");
},
success: function (data) {
var items = "";
$.each(data, function (i, item) {
items += "<option value=\"" + item.Value + "\">" + item.Text + "</option>";
});
$("#PropertyId").html(items);
}
});
}
$(document).ready(function () {
$("#AreaId").change(function () {
var area = $("#AreaId").val();
getSEATs(area);
});
$("#SEATId").change(function () {
var seat = $("#SEATId").val();
getEstablishments(seat);
});
$("#EstablishmentId").change(function () {
var estab = $("#EstablishmentId").val();
getProperties(estab);
});
});
</script>
<div class="control-group">
@Html.LabelFor(m => m.AreaId, new { @class = "control-label" })
<div class="controls">
<div>
@Html.DropDownListFor(m => m.AreaId, new SelectList(Model.Areas, "ID", "Description", -1), "-- Please Select -- ")
</div>
</div>
</div>
<div class="control-group">
@Html.LabelFor(m => m.SEATId, new { @class = "control-label" })
<div class="controls">
<div>
@Html.DropDownListFor(m => m.SEATId, new SelectList(Model.SEATs, "ID", "Description", -1))
</div>
</div>
</div>
<div class="control-group">
@Html.LabelFor(m => m.EstablishmentId, new { @class = "control-label" })
<div class="controls">
<div>
@Html.DropDownListFor(m => m.EstablishmentId, new SelectList(Model.Establishments, "ID", "Description", -1))
</div>
</div>
</div>
<div class="control-group">
@Html.LabelFor(m => m.PropertyId, new { @class = "control-label" })
<div class="controls">
<div>
@Html.DropDownListFor(m => m.PropertyId, new SelectList(Model.Properties, "ID", "Description", -1))
@Html.ValidationMessageFor(m => m.PropertyId)
</div>
</div>
</div>
当我提交我的主表单时,会为主视图上的字段触发验证,而不是部分视图。谁能告诉我为什么?
谢谢,保罗。