Telerik MVC контролирует неправильное вложение в родительские div при использовании Razor View Engine - PullRequest
1 голос
/ 15 января 2011

Вот ситуация: я использую элементы управления Telerik в проекте ASP.NET MVC с использованием движка Raaor View.На мой взгляд, у меня есть макет, похожий на MS Office Outlook, с использованием иерархии тегов div.Я использую CSS для управления размещением тегов div.Ниже приведена абстрактная версия:

<body>
   <div id="menuBar"> (Telerik menu here) </menubar>
   <div id="leftpanel"> (Telerik calendar here)
   </div>
   <div id="main">
     (Telerik grid here)
   </div>
</body>

Когда я заглушил свои частичные представления и т. Д., Я использовал текст, статические HTML-таблицы и списки, чтобы убедиться, что мое дерево DOM было правильно построено.Поместив элементы управления Telerik в мои частичные представления, когда я проверяю DOM.все элементы управления являются потомками тегов div, в которые я их поместил.

<body>
<div id="TelerikGrid"></div>
<div id="TelerikButtons"></div>
<div id="TelerikPanels"></div>
   <div id="menuBar"></menubar>
   <div id="leftpanel"></div>
   <div id="main">
   </div>
</body>

Отсутствуют отсутствующие теги div, и если я заменю элемент управления telerik на визуализированный вывод, размещение в DOM будет правильным!Такое поведение заставляет меня думать, что элементы управления Telerik отображаются на странице не по порядку.Я могу настроить позиционирование с помощью css, но если я смогу сохранить эти элементы управления должным образом вложенными, тогда атрибуты стиля, такие как width: 100%, будут намного проще.

Я не думаю, что есть проблема с сеткой- Я вставил сетку из более раннего проекта MVC, который не использует Razor, и он правильно вложен.

Я попытался обернуть элементы управления telerik тегами div вpartView и в макете.Органы управления настаивают на том, чтобы быть потомками <BODY>.

Если я использую движок представления aspx по умолчанию, элементы управления находятся в нужном месте!

Есть мысли?Это ошибка при использовании Telerik с Razor?

Ответы [ 2 ]

1 голос
/ 17 января 2011

Скорее всего, вы вызываете Render (), который вызывает проблемы с Razor.Мы исправили это, но исправление еще не выпущено официально.В качестве обходного пути не вызывайте метод Render ().Для дополнительной справки вы можете проверить эту запись библиотеки кода, которая является примером проекта MVC 3 / Razor.

1 голос
/ 15 января 2011

Я не знаю, как реализованы элементы управления Telerik, но в движке Razor произошли изменения.Рассмотрим следующие помощники:

public static class Extensions
{
    public static void Test1(this HtmlHelper htmlHelper)
    {
        htmlHelper.ViewContext.Writer.Write("<h2>Hello</h2>");
    }

    public static void Test2(this HtmlHelper htmlHelper)
    {
        htmlHelper.ViewContext.HttpContext.Response.Write("<h2>Hello</h2>");
    }
}

Test1 использует ViewContext.Writer, а Test2 использует ViewContext.HttpContext.Response.А вот пример использования:

<span>@{Html.Test1();}</span>
<span>@{Html.Test2();}</span>

Test1 будет отлично работать, в то время как Test2 испортит порядок, что произойдет только в Razor.Обратите внимание, что оба помощника будут нормально работать с механизмом просмотра ASPX:

<span><% Html.Test1(); %></span>
<span><% Html.Test2(); %></span>

Так что я подозреваю, что элементы управления Telerik могут каким-то образом записывать в HttpContext.Response вместо использования ViewContext.Writer.Возможно, ребята из Telerik смогут сказать вам, если это так, но это похоже на ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...