我有一个剑道下拉列表
@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>();
}
我遇到的主要问题是我的tabtrip LoadContentFrom属性引用了Model.database_pk值。这个想法是tabtrip中的内容会加载,具体取决于dropdownlistfor的选定值是什么..但无论我选择什么它发布的路线值是0
@(Html.Kendo().TabStrip()
.Name("menu")
.Items(items =>
{
items.Add().Text("Database Info").HtmlAttributes(new { @id = "dbinfotab" }).LoadContentFrom("DatabaseInfo", "Home", new { database_pk = Model.database_pk }).Selected(true);
items.Add().Text("Tables").HtmlAttributes(new { @id = "tabletab" }).LoadContentFrom("TableInfo", "Table", new { database_pk = Model.database_pk }).Selected(false);
items.Add().Text("Entities").HtmlAttributes(new { @id = "entitytab" }).LoadContentFrom("EntityInfo", "Entity", new { database_pk = Model.database_pk }).Selected(false);
})
.Events(events =>
{
events.Select("selectMenuTabs");
})
)
谁知道我做错了什么......有想法......我已经坚持了两天。
我很乐意找到一些方法来强制使用jquery中的ajax调用来重新加载标签,但我还是无法弄清楚如何从jquery重新加载内容。实际上..在jquery中它会更好..因为我有其他函数,其中id强制重新加载tabstip项目
答案 0 :(得分:0)
@(Html.Kendo().TabStrip()
是剃刀代码并在服务器上生成
.LoadContentFrom("DatabaseInfo", "Home", new { database_pk = Model.database_pk })
评估为(假设database_pk
的初始值为零)
.LoadContentFrom("DatabaseInfo", "Home", new { 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
答案 1 :(得分:0)
我确实必须在jquery中这样做,答案实际上就是像Stephen建议的那样重新加载Kendo Tabstrip contentElement(感谢你指出了我正确的方向)。
我还需要一个例程,既可以选择tabtrip项目,也可以更改选择值的下拉列表。
所以我创建了一个例程,它将获取所选选项卡的索引并使用它来获取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);
});
}