Asp.net mvc mvc dropdow更改不会触发

Asp.net mvc mvc dropdow更改不会触发,asp.net-mvc,cascadingdropdown,Asp.net Mvc,Cascadingdropdown,我尝试在mvc页面上使用3个下拉列表,如果我更改ddl 1,ddl 2中的值应该更改,而ddl 2的更改应该更改ddl 3中的值。到目前为止,我有这个代码。。。。DDL1的值已设置,但如果我更改DDL1中的值,则不会发生任何事情。DDL2不获取任何值,并且“publicJsonResult GetPapperByTypeId(intTypeId)”根本不会被触发 我错过了什么 主视图 @using (Html.BeginForm("Inde

我尝试在mvc页面上使用3个下拉列表,如果我更改ddl 1,ddl 2中的值应该更改,而ddl 2的更改应该更改ddl 3中的值。到目前为止,我有这个代码。。。。DDL1的值已设置,但如果我更改DDL1中的值,则不会发生任何事情。DDL2不获取任何值,并且“publicJsonResult GetPapperByTypeId(intTypeId)”根本不会被触发

我错过了什么

主视图

                            @using (Html.BeginForm("Index", "Home", FormMethod.Post, new { id = "myForm", name = "papper_search" }))
                            {

                                            @Html.DropDownList("PrintType", ViewData["papperType"] as List<SelectListItem>, new { @class = "form-control" })
                                            <br />
                                            <br />
                                            @Html.DropDownList("Papper", new SelectList(string.Empty, "Value", "Text"), "Please select a paper", new { @class = "form-control" })

                                            <br />
                                            <br />
                                            @Html.DropDownList("PapperType", new SelectList(string.Empty, "Value", "Text"), "Please select a type", new { @class = "form-control" })

                            }





<script type="text/javascript" src="@Url.Content("~/js/jquery.min.js")"></script>
<script type="text/jscript">
$(function ()
{
    $('#PrintType').change(function ()
    {
        $.getJSON('/Home/GetPapperByTypeId/' + $('#PrintType').val(), function (data)
        {
            var items = '<option>Select Papper</option>';
            $.each(data, function (i, printtype)
            {
                items += "<option value='" + printtype.Value + "'>" + printtype.Text + "</option>";
            });
            $('#Papper').html(items);
        });
    });

    $('#Papper').change(function ()
    {
        $.getJSON('/Home/Citylist/' + $('#Papper').val(), function (data)
        {
            var items = '<option>Select PapperType</option>';
            $.each(data, function (i, pappertype)
            {
                items += "<option value='" + pappertype.Value + "'>" + pappertype.Text + "</option>";
            });
            $('#PapperType').html(items);
        });
    });
});
</script>
@使用(Html.BeginForm(“Index”,“Home”,FormMethod.Post,new{id=“myForm”,name=“papper\u search”}))
{
@DropDownList(“PrintType”,ViewData[“papperType”]作为列表,新的{@class=“form control”})


@Html.DropDownList(“Papper”,新选择列表(string.Empty,“Value”,“Text”),“请选择一张纸”,新{@class=“form control”})

@DropDownList(“PapperType”,new SelectList(string.Empty,“Value”,“Text”),“请选择一种类型”,new{@class=“form control”}) } $(函数() { $('#PrintType')。更改(函数() { $.getJSON('/Home/GetPapperByTypeId/'+$('#PrintType').val(),函数(数据) { var项目='选择Papper'; $.each(数据、函数(i、打印类型) { items+=“”+printtype.Text+“”; }); $('#Papper').html(项目); }); }); $('#Papper')。更改(函数() { $.getJSON('/Home/Citylist/'+$('#Papper').val(),函数(数据) { 变量项='选择PapperType'; $.each(数据、函数(i、pappertype) { items+=“”+pappertype.Text+“”; }); $('#PapperType').html(项目); }); }); });
家庭控制器

   public ActionResult Index()
    {

        var li = new List<SelectListItem>
        {
            new SelectListItem {Text = "Select", Value = "0"},
            new SelectListItem {Text = "Plain paper", Value = "1"},
            new SelectListItem {Text = "Heavy paper", Value = "2"},
        };
        ViewData["papperType"] = li;

    }

    //Action result for ajax call
    public JsonResult GetPapperByTypeId(int typeId)
    {
        var objallPappers = GetAllPappers().Where(m => m.TypeId == typeId).ToList();
        var obgpapper = new SelectList(objallPappers, "Id", "Name", 0);
        return Json(obgpapper, JsonRequestBehavior.AllowGet);
    } 


    public List<Papper> GetAllPappers()
    {
        var objPapper = new List<Papper>
        {
            new Papper {Id = 1, TypeId = 1, Name = "papper-1"},
            new Papper {Id = 2, TypeId = 2, Name = "papper-1"},
            new Papper {Id = 3, TypeId = 4, Name = "papper-1"},
            new Papper {Id = 4, TypeId = 1, Name = "papper-2"},
            new Papper {Id = 5, TypeId = 1, Name = "papper-3"},
            new Papper {Id = 6, TypeId = 4, Name = "papper-2"}
        };
        return objPapper;
    }               
public ActionResult Index()
{
var li=新列表
{
新建SelectListItem{Text=“Select”,Value=“0”},
新建SelectListItem{Text=“普通纸”,Value=“1”},
新建SelectListItem{Text=“Heavy paper”,Value=“2”},
};
ViewData[“papperType”]=li;
}
//ajax调用的操作结果
公共JsonResult GetPapperByTypeId(int-typeId)
{
var objallPappers=GetAllPappers()。其中(m=>m.TypeId==TypeId.ToList();
var obgpapper=new SelectList(objallappers,“Id”,“Name”,0);
返回Json(obgpapper,JsonRequestBehavior.AllowGet);
} 
公共列表GetAllPappers()
{
var objPapper=新列表
{
新Papper{Id=1,TypeId=1,Name=“Papper-1”},
新Papper{Id=2,TypeId=2,Name=“Papper-1”},
新Papper{Id=3,TypeId=4,Name=“Papper-1”},
新Papper{Id=4,TypeId=1,Name=“Papper-2”},
新Papper{Id=5,TypeId=1,Name=“Papper-3”},
新Papper{Id=6,TypeId=4,Name=“Papper-2”}
};
返回objPapper;
}               

问题:在这行代码中

$.getJSON('/Home/GetPapperByTypeId/'+$('#PrintType').val(),函数(数据)

实际问题是这个
/Home/GetPapperByTypeId/'+$('#PrintType').val()

这将以类似于
/Home/GetPapperByTypeId/SomeValue的URL结束

解决方案:您想要的是URL类似于
/Home/GetPapperByTypeId/?typeId=SomeValue

请注意添加到查询字符串中的?typeId=。因为控制器操作需要一个名为
typeId

public JsonResult GetPapperByTypeId(int typeId)
因此,将jquery中的语法更改为

$.getJSON('/Home/GetPapperByTypeId/?typeId=' + $('#PrintType').val(), function (data)
这行代码中存在类似的问题


$.getJSON('/Home/Citylist/'+$('#Papper').val(),函数(数据)
也修复此问题。

您是否收到任何错误。在控制台窗口中检查我现在看到我收到此错误…”TypeError:$不是函数这是在我的jScript中。这意味着您没有包含
jquery
,或者它没有正确加载,或者存在命名冲突。感谢Stephen提供的信息。我现在可以使用了:)我无法检查此更改是否有任何差异,因为“TypeError:$不是函数”我得到了…@MTplus只有当
jQuery
文件没有正确加载到您的页面时,您才会得到这个错误。另外,将
的“text/jscript”
更改为
“text/javascript”
,因为我认为您的代码中不需要键入
jscript