我在这里看到了很多有关DropDownList和DropDownListFor事件的问题,这些事件没有触发但没有解决我问题的答案。 我认为我没有忽略任何事情,所以我会发表我自己的问题...

我的视图中包含以下代码:

@model MyWebApp.ViewModels.ProductAdminViewModel
@{
    ViewBag.Title = "Manage Products";
}
<script type="text/javascript">
    $(function () {
        $('select#CurrentCategoryId').change(function () {
            alert('We got here!');
        })
    });
</script>

@using (Ajax.BeginForm(new AjaxOptions { InsertionMode = InsertionMode.Replace, UpdateTargetId = "indexGrid" }))
{ 
    <fieldset>
        <legend>Select Category</legend><span>Category: </span>
        @Html.DropDownListFor(model => model.CurrentCategoryId, Model.CategorySelectList, new { @id = "CurrentCategoryId" })
    </fieldset>
}
<div id="indexGrid">
    @Html.Partial("_indexGrid", Model)
</div>

从ViewModel的SelectList中正确填充了该下拉列表,唯一需要注意的另一件事是VM中的CurrentCategoryId是public int属性。

在将脚本下拉列表绑定时,我忽略了什么?

编辑:我在_Layout.cshtml文件中具有以下内容:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
<script type="text/javascript" src="/Scripts/prototype.js"></script>
<script type="text/javascript" src="/Scripts/scriptaculous.js?load=effects,builder"></script>
<script type="text/javascript" src="/Scripts/lightbox.js"></script>
<script type="text/javascript" src="/Scripts/jquery-ui-1.8.16.custom.min.js"></script>
<script type="text/javascript" src="/Scripts/jquery.unobtrusive-ajax.min.js"></script>
<script type="text/javascript" src="/Scripts/EditorTypes.js"></script>

感谢@Hawkke。 这是我的工作代码:

<script type="text/javascript">
    function CategoryChanged(newCategoryId) {
        alert('The category has been changed!');
    };
</script>
...
@Html.DropDownListFor(model => model.CurrentCategoryId, Model.CategorySelectList, new { @onchange = "CategoryChanged(" + @Model.CurrentCategoryId + ")" })

===============>>#1 票数:1 已采纳

'select#CurrentCategoryId'需要一个名为'CurrentCategoryId'的控件,但是下拉列表的名称是VM的ID。

编辑

我要做的是将您的javascript从jQuery函数更改为常规函数。

<script>
    function ChangeMe(currentCategoryId) {
        // do stuff here
    }
</scrip>

然后更改您的html帮助器:

@Html.DropDownListFor(model => model.CurrentCategoryId, Model.CategorySelectList, 
    new { onchange = "ChangeMe(@Model.CurrentCategoryId)" })

我不是100%使用剃刀语法,但我认为您明白了。

  ask by ConfusedMonkey translate from so

未解决问题?本站智能推荐: