【问题标题】:Im trying to bind value from select2 list to model on post razor mvc我试图将 select2 列表中的值绑定到 post razor mvc 上的模型
【发布时间】:2019-02-06 16:02:24
【问题描述】:

我目前在 .net-core 剃须刀页面上有一个模型的编辑视图。下面的代码用于选择我在 select2 下拉列表中为 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);
     }
});

如果我重新选择相同的项目,它会正确绑定并发送到控制器上的操作。我没有提供操作或表单的其余部分,因为此功能正常工作。

【问题讨论】:

    标签: asp.net-mvc razor .net-core jquery-select2


    【解决方案1】:

    我通过删除解决了这个问题:

     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');
    

    【讨论】:

      猜你喜欢
      • 2015-05-18
      • 2012-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多