Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将kendo DropDownListFor的值传递给另一个DropDownListFor的操作_C#_Asp.net Mvc_Kendo Ui_Dropdownlistfor - Fatal编程技术网

C# 将kendo DropDownListFor的值传递给另一个DropDownListFor的操作

C# 将kendo DropDownListFor的值传递给另一个DropDownListFor的操作,c#,asp.net-mvc,kendo-ui,dropdownlistfor,C#,Asp.net Mvc,Kendo Ui,Dropdownlistfor,我有一个DropDownListFor组件,它有一个从数据库获取值的读取操作。但是,我想根据另一个DropDownListFor的值过滤这些值 下面是具有筛选值的DropDownListFor组件 <div class="editor-field"> @(Html.Kendo().DropDownListFor(model => model.ReleaseID) .D

我有一个DropDownListFor组件,它有一个从数据库获取值的读取操作。但是,我想根据另一个DropDownListFor的值过滤这些值

下面是具有筛选值的DropDownListFor组件

        <div class="editor-field">
                        @(Html.Kendo().DropDownListFor(model => model.ReleaseID)
                        .DataTextField("Value")
                        .DataValueField("Key")
                        .DataSource(ds => ds 
                            .Read(read=>read.Action("GetReleases", "Task"))
                            ) 
                        ) 
            @Html.ValidationMessageFor(model => model.ReleaseID)
          </div>
但是,GetMarketModels方法中的release始终为0,无论顶部的ReleaseID下拉列表选择了什么。我做错了什么


谢谢。

您需要使用级联下拉列表。在这里,您可以找到如何创建级联下拉列表的示例:


我真的不喜欢这个例子,所以我想我应该详细说明你如何从你拥有的东西走向应该起作用的东西——这对我自己、你自己和其他阅读本文的人都有好处:

首先,您需要ReleaseID上的Name属性:

@(Html.Kendo().DropDownListFor(model => model.ReleaseID)
    .Name("ReleaseID")  // <-- needs this line added
    .DataTextField("Value")
    .DataValueField("Key")
    .DataSource(ds => ds 
        .Read(read=>read.Action("GetReleases", "Task"))
     ) 
 ) 
然后,在任务控制器中,传入变量:

public JsonResult GetMarketModels(string strReleaseID)
{
    int releaseID = int.Parse(strReleaseID);
    var data = db.MarketModels.Where(t => t.ReleaseID == releaseID).ToList();
    return Json(data, JsonRequestBehavior.AllowGet);
}

请注意,在JavaScript中为参数指定的名称必须与控制器函数中的名称匹配。这个方法就是我用来在应用程序中级联下拉列表的方法,对我很有用。

谢谢!我尝试实现这个示例,但由于某些原因,当父控件中的选择发生更改时,我无法使子控件刷新。由于该控件的enabled设置为false,因此它永远不会重置。我遗漏了什么吗?你能更新你的问题以包含你尝试过的层叠下拉列表的代码吗?事实上,我意识到我是反向层叠的,这就是代码不起作用的原因。现在所有的信号都正常了。再次感谢!非常感谢,你救了我的命。我有这个问题已经两天了,呵呵。很高兴我能帮上忙!一定要在这里搜索答案!或者在GMail上给我打电话。也许哪天我甚至会让你请我吃饭。:)呵呵……谢谢,我会的
@(Html.Kendo().DropDownListFor(model => model.ReleaseID)
    .Name("ReleaseID")  // <-- needs this line added
    .DataTextField("Value")
    .DataValueField("Key")
    .DataSource(ds => ds 
        .Read(read=>read.Action("GetReleases", "Task"))
     ) 
 ) 
@(Html.Kendo().DropDownListFor(model => model.MarketModelID)
    .Events(e => e.Select("onSelectMarketModel"))
    .Template("<span data-title='Model Description: #: data.Item3 #'>#: data.Item2 # </span>")
    .DataTextField("Item2")
    .DataValueField("Item1")
    .DataSource(source => 
    {
         source.Read(read => 
         {
             read.Action("GetMarketModels", "Task").Data("filterMarket");
         })
         .ServerFiltering(true);
     })
     .CascadeFrom("ReleaseID")  // <-- "Name" attribute, from above
     .Value(Model.MarketModelID != null ? Model.MarketModelID.ToString() : "1")
)
<script>
    function filterMarket() {
        return {
            strReleaseID : $("#ReleaseID").val()
        }
    }
</script>
public JsonResult GetMarketModels(string strReleaseID)
{
    int releaseID = int.Parse(strReleaseID);
    var data = db.MarketModels.Where(t => t.ReleaseID == releaseID).ToList();
    return Json(data, JsonRequestBehavior.AllowGet);
}