MVC3アプリをTinyMCEに外部画像リストのjavascriptファイルでフィードしようとしています。 TinyMCEをセットアップして、静止画リストファイルを使用すると画像リストを取得できるので、その部分が動作することが分かります。しかし、ユーザごとにイメージリストを動的に作成する必要があるので、静的なファイルよりも柔軟なものが必要です。それはダウン次のコントローラアクションからJavaScriptを提供することである:MVC3アプリケーションでのTinyMCEドロップダウンリストの取得
public JavaScriptResult TinyMCEImageList(int id)
{
ListHelper lh = new ListHelper();
string js = "var tinyMCEImageList = new Array(\r\n" + "// Name, URL\r\n";
Dictionary<string, string> dict = lh.GetPetImageURLs(id);
int i = dict.Count();
foreach (var item in dict)
{
js += "['" + item.Key + "', '" + item.Value + "']";
if (i > 1)
{
js += ",\r\n";
}
i--;
}
js += "\r\n);";
return JavaScript(js);
}
ListHelper.GetPetImageURLs()単に各画像のキャプションとURLを保持するための便利な方法である辞書オブジェクトを返します。ブラウザから適切なidパラメータを使ってこのコントローラを呼び出すと、実行可能なJSファイルと考えることができます。実際、このような結果は、私がTinyMCEイメージリストの設定をテストするために使用した静的ファイルを作成するために使用したものであり、実際のドロップダウンイメージリストになっています。
ここに私のTinyMCEセットアップがあります。
tinyMCE.init({
mode: "textareas",
theme: "advanced",
plugins: "lists,pagebreak,style,table,inlinepopups,advhr,advimage,preview,searchreplace,print,paste,visualchars,nonbreaking",
theme_advanced_buttons1: "newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,formatselect,fontselect,fontsizeselect",
theme_advanced_buttons2: "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,forecolor,backcolor,image",
theme_advanced_buttons3: "tablecontrols,|,visualaid,|,sub,sup,|,advhr,|,preview,print,|,visualchars,nonbreaking,template,blockquote,pagebreak",
theme_advanced_toolbar_location: "top",
theme_advanced_toolbar_align: "left",
theme_advanced_statusbar_location: "bottom",
theme_advanced_resizing: true,
external_image_list_url: "/InstructionDocument/TinyMCEImageList/@ViewBag.PetID"
});
の@ ViewBag.PetIDが他の場所で使用されているので、私はそれが有効である知っている:これはTinyMCEのインスタンスを含むビュー内にあります。この値をハードコードしたり、コントローラの動作を指定したりしても、まだ画像のドロップダウンリストは表示されません。私は欠けているものがあると確信しています。誰かが私にそれが何かを指摘することができますか(または少なくとも私にいくつかの合理的な指導を与える)ことができますか?
[EDIT]
TinyMCEImageList()アクションからの出力は、以下:ここで
またvar tinyMCEImageList = new Array(
// Name, URL
['System Guinea Pig - 4', 'http://www.remindapet.com/Content/images/galler/1_4_970BB64F7C1A4375AF5722B8A62C8708.jpg'],
['System Guinea Pig - 5', 'http://www.remindapet.com/Content/images/gallery/1_4_CBA0D3DDBBED41C583A6E6C46FC9DADF.jpg']
);
は、アクションから上記のJavaScriptリターンのヘッダである:
Server ASP.NET Development Server/10.0.0.0
Date Fri, 23 Dec 2011 00:14:31 GMT
X-AspNet-Version 4.0.30319
X-AspNetMvc-Version 3.0
Cache-Control private
Content-Type application/x-javascript; charset=utf-8
Content-Length 292
Connection Close
したがって、アクションは実際にはJavascriptResultを返しています。私はちょうどそれを見るためにTinyMCEを得る方法を考え出すことができなかった。
ありがとうございます!
あなた 'TinyMCEImageList()'メソッドの最終的な出力は何ですか? – eth0
コメントありがとう、eth0。返されるHTTPヘッダーを含め、アクションの出力を含む質問を編集しました。私は助けることはできませんが、TinyMCE設定コードからアクションを呼び出す方法には特別なトリックがあると思います。どんな指針も大変ありがとうございます。 –