如何在 Select2 输入中设置默认值,并在 asp.net mvc 中标记
本文关键字:asp 并在 net mvc 默认值 Select2 输入 设置 | 更新日期: 2023-09-27 18:36:39
在我看来,我有这个 Select2 输入框充当标签控制器:
CSHTML
<input id="tagSelector" type="hidden" style="width: 300px"/>
.JS
$('#tagSelector').select2({
placeholder: 'Select a tag...',
multiple: true,
ajax: {
url: '@Url.Action("SearchTags", "UnitDetails")',
dataType: 'json',
data: function(term, page) {
return {
searchTerm: term
};
},
results: function(data, page) {
return { results: data };
}
},
createSearchChoice: function(term) {
return { id: term, text: term };
}
}).on("removed", function(e) {
var url = '@Url.Content("~/UnitDetails/UnTagUnit/" + Model.ViewUnitContract.Id)';
var id = e.val;
var tagName = e.choice.text;
console.log(id + " : " + tagName);
$.ajax({
url: url,
data: { selectedItem: tagName },
type: 'GET',
dataType: 'json',
success: function() {
},
error: function() {
}
});
})
.on("select2-selecting", function(e) {
var url = '@Url.Content("~/UnitDetails/TagUnit/" + Model.ViewUnitContract.Id)';
var id = e.val;
var tagName = e.object.text;
console.log(id + " : " + tagName);
$.ajax({
url: url,
data: { selectedItem: tagName },
type: 'GET',
dataType: 'json',
success: function() {
},
error: function() {
}
});
});
});
C#
public JsonResult GetInitialTags(int id)
{
Model = new UnitDetailsModel(UnitClient.GetUnit(id));
foreach (var tag in Model.ViewUnitContract.Tags)
{
Model.TagsSelected.Add(tag);
}
var result = Model.TagsSelected.Select(a => new
{
id = a.Id,
text = a.Name
});
return Json(result, JsonRequestBehavior.AllowGet);
}
现在,我似乎无法弄清楚如何使用initSelection
来使用已选择的标签填充输入框。我希望有人能帮我解决这个问题,因为我开始感到有点迷茫:)
通过将 initSelection
属性添加到我的 javascript 中找到了解决方案:
...
initSelection: function (element, callback) {
$.get('@Url.Action("GetInitialTags", "UnitDetails", new { id = Model.ViewUnitContract.Id })', function (initTags) {
var tags = [];
for (var i = 0; i < initTags.length; i++) {
tags.push({ "id": initTags[i].id, "text": initTags[i].text });
}
callback(tags);
});
},
...