Здесь я видел много вопросов, касающихся событий 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>
Раскрывающийся список корректно заполняется из списка SelectList в моей ViewModel, и единственное, на что следует обратить внимание, это то, что CurrentCategoryId в виртуальной машине является общедоступным свойством 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 + ")" })