我在这里看到了很多有关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

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

5回复

ASP.NET MVC @ Html.DropdownList对于错误的选定值

我知道有吨关于这个问题( 这个 这个和这个 )是一些我读了问题,但我并没有发现任何帮助: 我认为我有 在我的助手中 我希望选择值为1的项目,但会生成以下HTML: 我还尝试在帮助器中将Selected属性设置为true。 这也不起作用。
2回复

在ASP.NET MVC5中绑定@ Html.DropDownListFor的最佳方法是什么?

我想从Model数据绑定@Html.DropDownListFor而不使用Viewbag并在网络上查看许多不同的示例。 但是他们大多数使用Viewbag或扩展方法,我想要一种更好的方法来解决此问题。 我尝试了以下方法,但似乎不起作用: 是否可以在不使用Viewbag或 ASP.NET
1回复

ASP.NET MVC剃刀-DropDownList宽度

为什么【@style =“ width:80px”】无效? 如何更改html.DropDownListFor的宽度?
1回复

ASP.Net MVC Razor-Javascript函数路由问题

我在使用层叠下拉列表(ASP.Net MVC Razor)时遇到了一些问题,我知道有关此主题的答案很多,但是我的答案完全不同,经过数小时的搜索,我找不到答案。 我有一个名为Requerente的区域内的PessoaController(PersonController)。 我有两个下
1回复

将基于字符串asp.net mvc的值自动选择DropdownList

我的模型中有一个字符串和一个列表属性 在我看来 现在在我的控制器中,我在属性_drinkType获得值“ Milk”,“ tea”和“ coffee”。 当它与属性值匹配时,我必须在DropdownlistFor设置所选选项 有点像if _drinktype = milk
8回复

如何使用@ Html.DropDownListFor在asp.net MVC 3中为SelectList描述组合两个dataTextFields

我正在返回一些存储的联系人来查看DropDownList,我无法在我的SelectList中包含多个dataTextFields。 目前我有: 我想拥有: 它结合了FirstName和LastName属性。 更新:我知道扩展联系人属性,我很好奇是否有一种简化的方法来在
2回复

如何在MVC3 Razor中禁用DropDownListFor?

我有这个工作和平的代码,显示在我的MVC3 Razor Web应用程序中填充DropDownList。 我需要保持DropDownList已填充但禁用它,因此用户无法在列表中选择值。 你能指出我正确的方向吗? 请提供一些代码示例。 谢谢!
2回复

一种在MVC Razor中使用DropDowns制作DropDownListFor的方法

假设我有一班人 我正在尝试将List<Person>绑定到DropDownListFor,所以它看起来像那样 落下: - 第一个人 -第一人称的listOfStrings的第一个字符串 -第一人称的listOfStrings的第二个字符串 -第二人称
1回复

DropDownListFor的Razor语法

如何在下面使用HTML助手编写代码? 上面的代码将在我的浏览器中提供正确的html代码。 但是,如果我在选项标签的value属性下面使用HTML帮助器,则会丢失。 如果您知道ViewBag.Counties是类型List<Country>一个对象,并且具有属性Nam
1回复

asp.net mvc Dropdownlist,显示dropdownlist,但其中没有任何项目

我有这个: 模型视图: 视图: 支持 我看到了下拉列表,但是现在有项目。 Model.FAQCategorieItems: count = 0 。 但是,如果我在控制器中放入一个断点,我会看到数据库中的所有项目。 谢谢。