Select2 jqueryプラグインを使用して、ASP.NETMVCサイトの投稿のタグを追加/作成しています。私が使用する機能は、次のような「リモートデータの読み込み」と「タグ付けのサポート」です。
<script type="text/javascript">
function tagResultList(tag) {
var counter = 'ny tagg';
var markup = "<table class='movie-result'><tr>";
markup += "<td class='movie-info'><div class='movie-title'>" + tag.text
if (typeof tag.count != 'undefined') {
counter = tag.count;
}
markup += "(" + counter + ")</div>";
markup += "</td></tr></table>"
return markup;
}
function tagResultSelectionName(tag) {
return tag.text;
}
$("#txtTagBox").select2({
multiple: true,
createSearchChoice:
function (term, data) {
if ($(data).filter(function () { return this.text.localeCompare(term) === 0; }).length === 0) {
return { id: 0, text: term };
}
},
placeholder: "Sök efter en tagg",
minimumInputLength: 3,
maximumInputLength: 30,
maximumSelectionSize: 5,
ajax: { // instead of writing the function to execute the request we use Select2's convenient helper
url: _tagsUrl,
dataType: 'json',
quietMillis: 100,
data: function (term, page) {
return {
q: term, // search term
page: page
};
},
results: function (data, page) { // parse the results into the format expected by Select2.
// since we are using custom formatting functions we do not need to alter remote JSON data
return { results: data.Tags, more: data.MorePages };
}
},
formatResult: tagResultList, // omitted for brevity, see the source of this page
formatSelection: tagResultSelectionName, // omitted for brevity, see the source of this page
dropdownCssClass: "bigdrop" // apply css that makes the dropdown taller
});
</script>
新しいタグを入力して選択する(新しいタグを作成する)ことはできますが、問題は、テキストボックスを送信するとID 0がサーバーに転送され、作成されたタグの名前を知る方法がないことです。
では、IDの代わりに文字列をサービスに送信するにはどうすればよいですか?または、既存のIDと作成された文字列のような混合モードがありますか?
よろしくお願いします