在MVC中当我使用部分视图时如何将参数传递给tabStrip?

时间:2014-05-11 21:05:58

标签: asp.net-mvc asp.net-mvc-4 kendo-ui kendo-asp.net-mvc kendo-tabstrip

在我的视图页面中,我有一个按钮。当我点击按钮时,我想打开窗口。窗口有一些tabtrip,在tabstrip中我想显示一个网格并将参数传递给网格。 kendo UI允许我这样做吗?

Kendo Window - 如何从我的主视图将参数传递给_TabStrip?(如参数是&#34; paraA&#34;字符串) < / p>

@(Html.Kendo().Window()
    .Name("window")
    .Title("About Alvar Aalto")
    .Content(@Html.Partial("_TabStrip").ToHtmlString())
    .Draggable()
    .Resizable()
    .Width(600)
    .Actions(actions => actions.Pin().Minimize().Maximize().Close())
    .Events(ev => ev.Close("onClose"))

_TabStrip (部分视图) - 如何将_TabStrip中的para传递给_Grid?(如参数是&#34; paraA&#34;主视图中的字符串)

@(Html.Kendo().TabStrip()
.Name("tabstrip")
.SelectedIndex(0)
.Items(items =>
    {
        items.Add()
            .Text("Paris")
            .Content(@Html.Partial("_Weather").ToHtmlString());
        items.Add()
            .Text("New York")
            .Content(@Html.Partial("_Grid").ToHtmlString());
    })    
)

_Weather (部分视图)

 <div class="weather">
     <h2>17<span>&ordm;C</span></h2>
     <p>Rainy weather in Paris.</p>
  </div>
 <span class="rainy">&nbsp;</span>

_Grid (部分视图) - 如何从_tabStrip获取参数?(例如参数是&#34; paraA&#34;主视图中的字符串)

@(Html.Kendo().Grid<Kendo.Mvc.Examples.Models.CustomerViewModel>()
    .Name("grid")
    .Columns(columns =>
        {
        columns.Bound(c => c.ContactName).Width(140);
        columns.Bound(c => c.ContactTitle).Width(190);
        columns.Bound(c => c.CompanyName);
        columns.Bound(c => c.Country).Width(110);
    })
    .HtmlAttributes(new { style = "height: 380px;" })
    .Scrollable()
    .Groupable()
    .Sortable()
    .Pageable(pageable => pageable
         .Refresh(true)
         .PageSizes(true)
         .ButtonCount(5))
         .DataSource(dataSource => dataSource
            .Ajax()
            .Read(read => read.Action("Customers_Read", "Grid").Data("GetParaFromMainView"))
        )
   )
 //How to get the parameter from main View 
 function GetParaFromMainView(){

 }

1 个答案:

答案 0 :(得分:1)

您可以传递参数。但它需要对您的观点进行一些更改。以同样的方式从控制器传递模型,它是相同的。 我将写出需要更改或添加的行。

主视图

此行打开窗口:

.Content(@Html.Partial("_TabStrip").ToHtmlString())

要:

.Content(@Html.Partial("_TabStrip",paraA).ToHtmlString())

_TabStrip

_TabStrip.cshtml视图中,您需要在顶部添加模型:

@model System.String //or just string

... 并改变这一行:

.Content(@Html.Partial("_Grid").ToHtmlString());

.Content(@Html.Partial("_Grid",Model).ToHtmlString());

_Grid

在您的_Grid.cshtml中,将模型添加到顶部

@model System.String // or just string

并更改此行:

.Read(read => read.Action("Customers_Read", "Grid").Data("GetParaFromMainView"))
    )

.Read(read => read.Action("Customers_Read", "Grid").Data(Model))
    )

我希望能帮助您解决问题。使用@Html.Partial的重载来传递您的cas字符串模型。试试让我知道。