2014-11-23 57 views
0

我有劍道dropdownlistfor我不能讓劍道dropdownlistfor模型更新所選值

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

主要的問題我已經是我的標籤欄LoadContentFrom屬性參考Model.database_pk值..這個想法是,tabstrip中的內容將根據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中Actually..doing這將是preferable..because我還有其他的功能,其中id喜歡逼tabstip項目的重載

回答

0

@(Html.Kendo().TabStrip()是剃刀代碼,並在服務器上生成,從而

.LoadContentFrom("DatabaseInfo", "Home", new { database_pk = Model.database_pk })

計算爲(假設database_pk初始值爲零)

.LoadContentFrom("DatabaseInfo", "Home", new { database_pk = 0 })

只是因爲你選擇它不會改變在下拉列表中有一些東西。您可以使用Ajax加載使用

var url = '@Url.Action("DatabaseInfo", "Home")'; 
$('#database_pk').change(function() { 
    var id = $(this).val(); 
    $(someSelector).load(url, {database_pk: id }); 
} 

從局部視圖返回的HTML內容假設你有一個方法

public ActionResult DatabaseInfo(int database_pk) 

返回的局部視圖

注意:您應該刪除從以下下降

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

設置id是毫無意義的因爲默認情況下它已經有id,你應該避免混合html標記和javascript

0

Stephen向我提供了一些我需要的信息,所以我接受他的答案..但是我也發佈了我自己的因爲它是一個不完整的解決方案,如果一些可憐的草皮與我有同樣的問題,我會希望他們能夠解決問題,而不必繼續搜索更多信息。

我確實必須在jquery中完成它,其實答案就是像Stephen建議的那樣重新加載Kendo Tabstrip contentElement(感謝您指向正確的方向)。

我還需要一個程序,將兩者在標籤欄項目的選擇和對dropdownlistfor選定值的變化工作..

所以我創建了一個程序,將獲得所選擇的選項卡的索引和使用它來獲取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); 
    }); 
} 
相關問題