Визуализировать частичный вид в правильном месте

Попытка: разместить частичный вид на вкладке телерика.

Проблема. Представление отображается над полосой вкладок, а не внутри первой вкладки.

Что я пробовал: если я использую RenderPage вместо RenderAction, то представление правильно отображается внутри полосы вкладок, однако тогда контроллер не вызывается и не загружает модель для представления сетки.

Код на данный момент:

Частичный просмотр:

@model IEnumerable<MyModel>

@{
    ViewBag.Title = "Index";
}

@*My code to load a GridView*@

Вид, содержащий полосу вкладок:

@{
    ViewBag.Title = "MyView";
}


@(Html.Kendo().TabStrip()
          .Name("tabstrip")
          .Items(tabstrip =>
          {
              tabstrip.Add().Text("Index")
                  .Selected(true)
                  .Content(@<text>
                    @{Html.RenderAction("Index", "MyController");}
                </text>);
              tabstrip.Add().Text("Index2")
                  .Content(@<text>
                </text>);                                 
          })
)

person Reafidy    schedule 20.09.2014    source источник
comment
Что произойдет, если вы используете .Content(@<text>@Html.Action("Index", "MyController")</text>); ?   -  person Lanorkin    schedule 20.09.2014
comment
@Lanorkin, который размещает таблицу в правильном месте, но, к сожалению, также дублирует нижний колонтитул с главной страницы _layout.   -  person Reafidy    schedule 20.09.2014
comment
@Lanorkin мой плохой - я не использовал частичный просмотр. Пожалуйста, оставьте свой комментарий в качестве решения.   -  person Reafidy    schedule 20.09.2014
comment
На самом деле я сам не вижу, чем это отличается от того, как вы его используете, поэтому я просто подумал вслух. То, как вы его используете, должно работать, если это проблема с частичным просмотром.   -  person Lanorkin    schedule 20.09.2014
comment
@Lanorkin Я тоже не понимаю, но это не связано с частичным просмотром. Я просто изменил его обратно на renderaction, и он вернулся над вкладкой.   -  person Reafidy    schedule 20.09.2014
comment
Должна быть перегрузка, которая принимает URL-адрес. Укажите URL действия, которое возвращает ваш частичный просмотр, и, пожалуйста, пожалуйста, удалите оттуда тег <text>. На самом деле вы можете загружать контент через AJAX и вместо Url.Content использовать Url.Action.   -  person Andrei V    schedule 20.09.2014
comment
@Andrei V Удаление текстового тега приводит к сбою кода с An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately   -  person Reafidy    schedule 20.09.2014
comment
Пожалуйста, посмотрите пример по ссылке выше. Используйте LoadContentFrom вместо Content.   -  person Andrei V    schedule 20.09.2014
comment
@Andrei V Я попробовал ваше предложение, но оно ничего не отображает/пусто. tabstrip.Add().Text("Index") .LoadContentFrom(Url.Action("~/Views/Index.cshtml") );   -  person Reafidy    schedule 20.09.2014
comment
LoadContentFrom ожидает URL, который вызывается с использованием AJAX. Этот URL-адрес должен достичь действия внутри одного из ваших контроллеров: tabstrip.Add().Text("Index").Selected(true) .LoadContentFrom(Html.Action("Index", "MyController")).   -  person Andrei V    schedule 20.09.2014
comment
@Andrei V отлично работает, спасибо. Можете ли вы опубликовать в качестве ответа?   -  person Reafidy    schedule 20.09.2014


Ответы (1)


Метод конфигурации Content для Kendo UI TabStrip следует использовать для «статического» контента. Под статическим я подразумеваю код, который у вас уже есть/знает. Для загрузки частичных представлений лучше всего использовать метод конфигурации LoadContentFrom. Для этого метода требуется допустимый URL-адрес существующего действия, которое возвращает целевое частичное представление:

@(Html.Kendo().TabStrip()
      .Name("tabstrip")
      .Items(tabstrip =>
      {
          tabstrip.Add().Text("Index")
              .Selected(true)
              .LoadContentFrom(Html.Action("Index", "MyController"));
          tabstrip.Add().Text("Index2")
              .Content(@<text>
            </text>);                                 
      })

)

person Andrei V    schedule 20.09.2014
comment
@Reafidy, я рад, что смог помочь. - person Andrei V; 20.09.2014