型号:
[Required]
[Display(Name = "Rank")]
[ForeignKey("ranks")]
public virtual int Rank_id { get; set; }
public virtual Rank ranks { get; set; }
查看:
<div class="editor-label">
@Html.LabelFor(model => model.Rank_id, "Rank")
</div>
<div class="editor-field">
@Html.DropDownListFor(a => a.Rank_id, (SelectList)ViewBag.Rank_id, "Select Rank", new { id="RankId" })
@Html.ValidationMessageFor(model => model.Rank_id)
</div>
我以前用来绑定下拉列表的脚本:
$('#IntroId').change(function () {
$.getJSON('/AgentRegister/BindRank/' + $('#IntroId').val(), function (data) {
var items = '<option>Select Rank </option>';
$.each(data, function (i, RankData) {
items += "<option value'" + RankData.Value + "'>" + RankData.Text + "</option>";
});
$('#RankId').html(items);
});
});
它的节目“场地排名必须是一个数字。”但我选择了那个
我该怎么办?
编辑: 页面来源:
<div class="editor-field">
<select data-val="true" data-val-number="The field Rank must be a number." data-val-required="The Rank field is required." id="RankId" name="Rank_id">
<option value="">Select Rank</option>
<option value="1">Agent</option>
<option value="2">General Manager</option>
</select>
<span class="field-validation-valid" data-valmsg-for="Rank_id" data-valmsg-replace="true">
</span>
</div>
答案 0 :(得分:0)
我不太确定,但我认为您需要将(SelectList)ViewBag.Rank_id
更改为(SelectList)ViewBag.Ranks
,并且您还要对@Html.ValidationMessageFor(model => model.Rank_id)
rank_id进行验证,这是int,因此当您使用时,其值应为int绑定下拉onchange函数,您将值赋值给引号中的选项删除引号并检查它。
$.each(data, function (i, RankData) {
items += "<option value=" + RankData.Value + ">" + RankData.Text + "</option>";
});