Я пытаюсь применить функцию к выпадающему списку в моей форме MVC4. Однако "переменные" вокруг переменных сохраняют рендеринг в HTML как "& # 39". Очевидно, что для javascript это не то, что я что. В настоящее время используется следующий код:
@Html.DropDownListFor(t => t.tabPosition, new SelectList(ViewBag.DdlPositions), new { onclick = Html.Raw("ddlChain(this.id, '" + Html.DisplayNameFor(t => t.relTab) + "', '')") })
и созданный html выглядит как
<select id="tabPosition" name="tabPosition" onclick="ddlChain(this.id, 'relTab, '')">
<option>Start</option>
<option>End</option>
<option>Before</option>
<option>After</option>
</select>
Альтернативно, есть ли лучший способ назначения функции js для ввода в MVC?
благодаря
также лучше передать список через модель, а не через ViewBag. Следуя ответам @SLaks, поместите это в свой скрипт
$(document).ready(function(){
$('#tabPosition').on('change', function(){
//Your code here for the change event something like
$('.Selected').val($('#tabPosition :selected').val());
//which will set an field on your page with class="Selected" to the selected item from your dropdown
});
});
Измените первую часть кода на это:
@Html.DropDownListFor(t => t.tabPosition, new SelectList(ViewBag.DdlPositions), new Dictionary<string,string>{{ "data-tab", Model.relTab }})
Элемент select element
создается с атрибутом data-tab
.
Теперь нам просто нужно создать javascript для чтения значения data-tab
и вызвать функцию ddlChain
.
$('#tabPosition').on('change', function() {
var $this = $(this);
ddlChain($this.attr('id'), $this.attr('data-tab'), '');
});