我在这里看到很多问题关于DropDownList和DropDownListFor事件不开火,但没有解决我的问题的答案。我不认为我已经忽略了什么,所以我会后我自己的问题......ASP.NET MVC 3与剃刀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 + ")" })
你有jQuery引用的任何地方吗? – epzee
更新后参考 – ConfusedMonkey
你可以粘贴html输出吗? – sTodorov