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);
});
}