Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.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# 我无法让剑道下拉列表更新模型中的选定值_C#_Asp.net Mvc_Razor_Kendo Asp.net Mvc - Fatal编程技术网

C# 我无法让剑道下拉列表更新模型中的选定值

C# 我无法让剑道下拉列表更新模型中的选定值,c#,asp.net-mvc,razor,kendo-asp.net-mvc,C#,Asp.net Mvc,Razor,Kendo Asp.net Mvc,我有一个剑道练习 @Html.Label("Databases: ") @(Html.Kendo().DropDownListFor(m => m.database_pk) .Name("database_pk") .BindTo(Model.databases) .OptionLabel("Select one...") .DataValueField("Value")

我有一个剑道练习

@Html.Label("Databases: ") @(Html.Kendo().DropDownListFor(m => m.database_pk)
            .Name("database_pk")
            .BindTo(Model.databases)
            .OptionLabel("Select one...")
            .DataValueField("Value")
            .DataTextField("Text")
            .HtmlAttributes(new { @id = "database_pk", onchange = "changeDatabase()" })
        )
我的模型是

 public class DatabaseListModel
    {
        public int database_pk { get; set; }
        public List<SelectListItem> databases = new List<SelectListItem>();
    }
有人知道我做错了什么吗有想法我已经被困在这个问题上两天了。 我很乐意在jquery中使用ajax调用来强制重新加载选项卡,但我也不知道如何从jquery重新加载内容。实际上..最好在jquery中执行..因为我还有其他函数,我想强制重新加载tabstip项

@Html.Kendo.TabStrip是razor代码,在服务器上生成,所以

.LoadContentFromDatabaseInfo,主页,新建{database_pk=Model.database_pk}

计算结果为假设数据库_pk的初始值为零

.LoadContentFromDatabaseInfo,主页,新建{database_pk=0}

它不会因为您在下拉列表中选择了某个内容而更改。可以使用ajax加载从局部视图返回的html内容,方法是

var url = '@Url.Action("DatabaseInfo", "Home")';
$('#database_pk').change(function() {
  var id = $(this).val();
  $(someSelector).load(url, {database_pk: id });
}
假设你有一个方法

public ActionResult DatabaseInfo(int database_pk)
返回部分视图的

注意:您应该从下拉列表中删除以下内容

.HtmlAttributes(new { @id = "database_pk", onchange = "changeDatabase()" })

设置id是没有意义的,因为默认情况下它已经有了该id,你应该避免混合使用html标记和javascript,Stephen向我提供了一些我需要的信息,所以我接受了他的回答。但我也发布了我自己的答案,因为这是一个不完整的解决方案,如果一些糟糕的sod也有同样的问题,我希望他们能够解决问题,而不必继续这样做搜索更多信息

我确实必须在jquery中这样做,答案实际上是重新加载Kendo Tabstrip contentElement,正如Stephen建议的那样,感谢Hanks为我指明了正确的方向

我还需要一个例程,既可以用于选择tabstrip项,也可以用于更改DropDownList的选定值

因此,我创建了一个例程,该例程将获取所选选项卡的索引,并使用该索引获取contentElement…在那里,我只需使用ajax调用的结果重置contentElement.html值

function reloadTabstripItem() {
    var selected_pk = $('#database_pk').val();
    var index =  $("#menu").data("kendoTabStrip").select().index();
    var actionurl; 
    switch (index) {
        case 0:
            actionurl = "/Home/DatabaseInfo";
            break;
        case 1:
            actionurl = "/Table/TableInfo";
            break;
        case 2:
            actionurl = "/Entity/EntityInfo";
            break;
    }
    $.ajax({
        url: "/Home/DatabaseInfo",
        type: 'GET',
        data: { database_pk: selected_pk }
    }).done(function (html) {
        $($("#menu").data("kendoTabStrip").contentElement(0)).html(html);
    });
}
function reloadTabstripItem() {
    var selected_pk = $('#database_pk').val();
    var index =  $("#menu").data("kendoTabStrip").select().index();
    var actionurl; 
    switch (index) {
        case 0:
            actionurl = "/Home/DatabaseInfo";
            break;
        case 1:
            actionurl = "/Table/TableInfo";
            break;
        case 2:
            actionurl = "/Entity/EntityInfo";
            break;
    }
    $.ajax({
        url: "/Home/DatabaseInfo",
        type: 'GET',
        data: { database_pk: selected_pk }
    }).done(function (html) {
        $($("#menu").data("kendoTabStrip").contentElement(0)).html(html);
    });
}