2012-06-21 10 views
8

私は剣道のUIのエディタを使用しているので、大きな問題があります。どのように剣道のUIエディタasp.net mvc3で剃刀を使用しますか?

私はどのようにエディタから返される表示項目がわかりません。

エディタのようなものに変換:に

<img src="someurl" /> 

を:

lt;p&gt;&lt;img src=&quot;someurl&quot;/&gt;&lt;/p&gt; 

と私は、データベースに変換後の文字列を維持し、でそれを表示してみてください。

記述が文字列である
@Html.Raw(item.description) 

剣道によって返された。

だから私は、任意の助けが理解されるだろうか、私のビューで正しく表示

見当がつかない。

+0

は、あなたが投稿するにはどうすればよいの関連部分あなたの眺めはどんな感じですか? – nemesv

+0

私はそれを私の投稿に追加します。 –

+0

あなたのビューにKendo UIエディタを定義する場所を投稿することはできますか?また、どのようにデータを投稿するのか? – nemesv

答えて

12

KendeUIエディタには、encodedというオプションがあり、エディタがエンコードされたHTMLタグを送信するかどうかを設定します。

、あなたのエディタを作成するときにエンコードされていないテキストは、このsnipletを使用し保存するためにwan't場合encodedのデフォルト値はtrue

です:

$("#Editor").kendoEditor({ 
    encoded: false 
}); 

しかし、あなたはにエンコードされたテキストを送信していないので、サーバーは、Asp.netリクエストバリデーターが起動し、リクエストを中止します。

あなたは何ができるか、強く型付けされたビューを使用している場合は、あなたのモデルプロパティにAllowHtmlAttributeを使用することです:

ビュー:

@model MyModel 

@using(Html.BeginForm("SomeAction", "SomeController")) 
{ 
    @Html.TextAreaFor(m => m.Editor) 
    <input type="submit" value="Save" /> 
} 

<script type="text/javascript"> 
    $(function(){ 
     $("#Editor").kendoEditor({ 
     encoded: false 
     }); 
    }); 
</script> 

モデル:

public class MyModel 
{ 
    [AllowHtml] 
    public string Editor { get; set; } 
} 

コントローラのアクション

public ActionResult SomeAction(MyModel myModel) 
{ 
    //Save to db, etc. 
} 

あなたはまた、あなたのweb.configファイルに次のように設定する必要がありますか、この属性は、.NET 4.0で効果がありません。それを行うには

<httpRuntime requestValidationMode="2.0"/> 
+0

ありがとうございますが、新しい問題があるので、問題の半分しか解決しません。このオプションを 'false'に設定すると、引用符とエラーで問題が発生します。'潜在的に危険なRequest.Form値がクライアントから検出されました。 'だから、より良い方法は 'encoded:true'に設定され、それをコントローラでエンコードするために何らかの変換を使用するのでしょうか?任意のアイデアはどのように? –

+0

KendoUIエディタにバインドされているプロパティの '[AllowHtml]'属性を使用します。 – nemesv

+0

私は '[AllowHtml]'属性をどこに追加すべきか分かりません。 –

5

Simplierの方法は、ビューとモデルではありません、コントローラに変更を加えることです。だから、:

ビュー

$("#Editor").kendoEditor(); 

モデル

public class MyModel 
{ 
    public string Editor { get; set; } 
} 

コントローラ

Editor = Server.HtmlDecode(Editor); 

HtmlDecode

7

私はMVCのため、この解決策を見つけた: ビュー

<div class="editor-field"> 
    @(Html.Kendo().EditorFor(model => model.HtmlField).Encode(false)) 
    @Html.ValidationMessageFor(model => model.HtmlField) 
</div> 

でモデルに:

[DataType(DataType.Html)] 
    [AllowHtml] 
    public string HtmlField{ get; set; } 

十分だった

+0

彼はちょうど私のために働いた!!!!!!!!!! Update Crudは、Html.Kendo()を使用しているときにコントローラーに当たっていませんでした。EditorForグリッドポップアップウィンドウのテンプレートです。上記の2つの属性を追加して、それが機能しました。私はあなたに10のアップフォートを与えることを願っています! – KeyboardFriendly

関連する問題