0

我正在尝试将函数应用于我的 MVC4 表单中的下拉列表。然而,变量周围的“'”在 HTML 中保持呈现为“'”。显然对于 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, &#39;relTab, &#39;&#39;)">
<option>Start</option>
<option>End</option>
<option>Before</option>
<option>After</option>
</select>

或者,有没有更好的方法将 js 函数分配给 MVC 中的输入?

谢谢

4

2 回答 2

0

最好通过模型而不是通过 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
    });
}); 
于 2013-11-11T15:36:58.037 回答
0

将代码的第一部分更改为:

@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'), ''); 
});
于 2013-11-11T15:42:39.440 回答