2011-01-15 2 views
1

状況: Raaor Viewエンジンを使用してASP.NET MVCプロジェクトでTelerikコントロールを使用しています。 私の見解では、divタグの階層を使ってMS Office Outlookに似たレイアウトがあります。私はdivタグの配置を制御するためにCSSを使用しています。抽象化されたバージョン以下の通りです:Razor View Engineを使用している場合、Telerik MVCが親divの内部に正しくネスティングしていない

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

私は私の部分図などをスタブアウトするとき、私は私のDOMツリーが適切に構築されたことを確認するために、テキスト、静的なHTMLのテーブルやリストボックスを使用していました。私がDOMを検査するときにTelerikコントロールを私の部分的なビューに入れます。コントロールは、私がそれらを内部に配置した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%のようなスタイル属性はずっと簡単になります。

グリッドに問題があるとは思わない - 私は、Razorを使用しない古いMVCプロジェクトからグリッドを貼り付け、正しくネストしました。

私は、partialViewとレイアウトのdivタグを使ってtelerikコントロールをラップしようとしました。コントロールは、<BODY>の子であることを主張しています。

デフォルトのaspxビューエンジンを使用している場合、コントロールは適切な場所にあります。

どのような考えですか?これはRazorでTelerikを使用しているバグですか?

+0

私はTelerikコントロールを含むパーシャルのデフォルトビューエンジンを使ってTelerikコントロールを配置するだけでこの制限を回避することができましたが、最適ではありません。 –

答えて

1

Razorの問題を引き起こしているRender()を呼び出している可能性があります。私たちはそれを修正しましたが、修正プログラムは正式にリリースされていません。回避策として、Render()メソッドを呼び出さないでください。さらに参照するには、サンプルMVC 3/Razorプロジェクトのthisコードライブラリエントリを確認してください。

1

Telerikコントロールの実装方法はわかりませんが、Razorビューエンジンに変更がありました。次のヘルパーを考えてみましょう:Test2ViewContext.HttpContext.Responseを使用しながら、

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>"); 
    } 
} 

Test1ViewContext.Writerを使用しています。そして、ここで使用例を示します:Test2意志の順で台無し、それが唯一のカミソリで起こるだろうが

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

Test1は完全に正常に動作します。両方のヘルパーはASPXビューエンジンで正常に動作することを注意してください:

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

だから私はTelerikのコントロールは何とかHttpContext.Responseに書き込む代わりにViewContext.Writerを使用している場合がありますことを疑います。たぶんTelerikの人たちはこれが本当かどうかを伝えることができますが、それはバグのようです。

+0

これはTelerikのコントロールのバグです。ヘルパーは決して 'Response'に直接書くべきではなく、' ViewContext.Writer'が常に使われるべきです。それはAspxで働くことが起こるが、それはもっと偶然のことだ。 – marcind