我目前有在剃刀页,.NET的核心模型的编辑视图。下面的代码在选择我通过在为选择2下拉列表中的PARTID价值而言。我的问题是,当我试图在窗体上再次发布不接触的部分元素,验证抱怨它没有设置。我见过传递给控制器这是不正确的行为时,将其设置为0。
HTML的形式对部分
<div class="form-group">
<label class="form-label">Part</label>
<select name="PartId" id="selectpicker1" class="form-control" data-style="btn-default">
<option></option>
</select>
<span asp-validation-for="PartId" class="text-danger"></span>
</div>
JS
$('#selectpicker1').select2({
placeholder: 'Select a part',
data: JSON.parse('@Html.Raw(Json.Serialize(Model.PartsList))'),
initSelection: function (element, callback) {
var data= { id: @Model.PartId.ToString(), text: '@Model.PartsList.Where(x=> x.Id == Model.PartId.ToString() ).First().Text'};
callback(data);
}
});
如果我重新选择相同的项目,它正确地结合并发送到动作控制器上。我还没有提供的动作或形式作为此功能工作正常休息。
我解决了这个问题通过删除:
initSelection: function (element, callback) {
var data= { id: @Model.PartId.ToString(), text: '@Model.PartsList.Where(x=> x.Id == Model.PartId.ToString() ).First().Text'};
callback(data);
}
并用下面的(目前选择的选项99,但我可以从模型中PARTID替换此。
$('#selectpicker1').val('99');
$('#selectpicker1').trigger('change');