【发布时间】:2014-11-12 11:13:47
【问题描述】:
我有三个单选按钮和一个位置下拉列表。根据单选按钮的选择,下拉列表中的项目使用 JSON 动态填充。 验证时,显示验证错误消息:“字段 PositionId 必须是数字。” 应该是“请选择位置”。代码如下。请指导我。谢谢。
查看:
<div class="panel-body">
<div class="row-fluid">
<div class="span1" style="text-align: right;">@Html.RadioButtonFor(m => m.CompanyType, "", new { id = "India", @checked = true, onclick = "ShowHideControls('India')", style = "margin-bottom:5px"})</div>
<div class="span3">@Html.LabelFor(m => m.CompanyType, "India")</div>
</div>
<div class="row-fluid">
<div class="span1" style="text-align: right;">@Html.RadioButtonFor(m => m.CompanyType, "", new { id = "USA", onclick = "ShowHideControls('USA')", style = "margin-bottom:5px"})</div>
<div class="span3">@Html.LabelFor(m => m.CompanyType, "USA")</div>
</div>
<div class="row-fluid">
<div class="span1" style="text-align: right;">@Html.RadioButtonFor(m => m.CompanyType, "", new { id = "UK", onclick = "ShowHideControls('UK')", style = "margin-bottom:5px" })</div>
<div class="span3">@Html.LabelFor(m => m.CompanyType, "UK")</div>
</div>
</div>
<div id="position" class="row-fluid">
<div class="span3">@Html.LabelFor(m => m.PositionId, "Position")</div>
<div class="span3">@Html.DropDownListFor(m => m.PositionId, (IEnumerable<SelectListItem>)ViewBag.PositionList, "--Please select Position--", new { id = "PositionList" })</div>
<div class="span4"><font color="red">@Html.ValidationMessageFor(m => m.PositionId)</font></div>
</div>
function getPositions(code)
{
var url = '@Url.Content("~/")' + "Registration/GetPositions";
var ddltarget = '#PositionList';
$.getJSON(url, { Code: code }, function (data) {
$(ddltarget).empty();
$(ddltarget).append("<option>--Please select Position--</option>");
$.each(data, function (index, optionData) {
$(ddltarget).append("<option value=" + optionData.Value + ">" + optionData.Text + "</option>");
});
});
}
Controller:
public JsonResult GetPositions(string code)
{
DataTable dt = registrationBLO.GetParameters(code);
List<SelectListItem> positions = new List<SelectListItem>();
foreach (DataRow dr in dt.Rows)
{
positions.Add(new SelectListItem { Text = dr["PARAM_VALUE"].ToString(), Value = dr["PARAM_ID"].ToString() });
}
return Json(positions, JsonRequestBehavior.AllowGet);
}
Model:
public class Registration
{
public int CompanyType { get; set; }
[DataType(DataType.Text)]
[Required(ErrorMessage = "Please select Position")]
public int PositionId { get; set; }
public string PositionName { get; set; }
}
【问题讨论】:
-
所有选项(包括动态加载的)的
value属性是数字吗? -
是的。选项值是数字
标签: asp.net-mvc-4