ASP.MVC 3 View()のHTML出力を別のWebサービスに送信できる文字列として保存する必要があります。私が "return view()"を呼び出すと、明らかに出力が画面にレンダリングされます。私はちょうどHTMLの文字列にそれをキャプチャしたい。可能?ASP.MVCビューの内容を文字列に保存するにはどうすればよいですか?
4
A
答えて
-1
htmlビューをレンダリングするコントローラを作成します。あなたはMVCフレームワークを持っているViewContextを使用することができますが、その後
string newString = GetContent("/Controller/HtmlView");
1
を呼び出すことができ、あなたのコードで
public ActionResult HtmlView()
{
return View();
}
public static string GetContent(string templatePath, string queryString = "")
{
bool isLocal = false;
if (HttpContext.Current != null)
isLocal = HttpContext.Current.Request.IsLocal;
try
{
var objWebClient = new System.Net.WebClient();
byte[] requestedHtml;
if (isLocal)
{
string path = "http://" + HttpContext.Current.Request.ServerVariables["SERVER_NAME"] + ":" +
HttpContext.Current.Request.ServerVariables["SERVER_PORT"] + templatePath +
queryString;
requestedHtml = objWebClient.DownloadData(path);
}
else
{
requestedHtml = objWebClient.DownloadData("http://" + HttpContext.Current.Request.ServerVariables["SERVER_NAME"] + templatePath + queryString);
}
var utf8 = new UTF8Encoding();
return utf8.GetString(requestedHtml).Replace(Environment.NewLine, "");
}
catch (Exception e)
{
return "";
}
}
文字列にしたくないビューのHTMLには何も含まれていません。そのビューをStringWriterのようなTextWriterクラスにレンダリングし、そのオブジェクトからレンダリングされた文字列を取得します。
public string RenderViewToString(ControllerContext context, ViewResultBase viewBase)
{
using (var sw = new StringWriter())
{
var view = viewBase.View;
var viewContext = new ViewContext(context, view, viewBase.ViewData,
viewBase.TempData, sw);
view.Render(viewContext, sw);
return sw.ToString();
}
}
+0
@ Kirk Woll ViewResultBaseオブジェクトとControllerContextオブジェクトがあると仮定して、私の答えにコードを追加しました。 – Clayton
+0
いいです、それはうまくいくはずです。 –
関連する問題
- 1. 文字列内の文字列を文字列内で渡すにはどうすればよいですか?
- 2. ダイナミック2次元配列に文字列を保存するにはどうすればよいですか?
- 3. 文字列内の\文字を/文字に変更するにはどうすればよいですか?
- 4. テキストファイルの内容を文字列に保存する方法
- 5. if文を文字列として保存するにはどうすればよいですか? C#
- 6. JLabelsの表示文字列をArrayListに保存するにはどうすればよいですか?
- 7. 文字列をAS3のファイルに保存するにはどうすればよいですか?
- 8. Windowsフォーム(C++)の文字列をテキストに保存するにはどうすればよいですか?
- 9. iPhone OSのsqlite3データベースに文字列を保存するにはどうすればよいですか?
- 10. wxPythonコンボボックスに文字列以外のオブジェクトを保存するにはどうすればよいですか?
- 11. plistを読み込んで文字列に保存するにはどうすればよいですか?
- 12. URLの内容を.txtファイルに保存するにはどうすればよいですか?
- 13. Angular-CLI - jsonファイルに接続文字列を保存するにはどうすればよいですか?
- 14. Rails:文字列表現をモデルに保存するにはどうすればよいですか?
- 15. HTML文字列をBitmap \ Imageに保存するにはどうすればよいですか?
- 16. ObjectDB JPAデータベースにUTF-8文字列を保存するにはどうすればよいですか?
- 17. 私の "contenteditable"テーブルの内容をPHPで保存するにはどうすればよいですか?
- 18. 文字列内の特定の文字列を削除するにはどうすればよいですか?
- 19. Talendでは、ファイルの内容を変数に保存するにはどうすればいいですか?
- 20. 登録内容をローカルストレージに保存するにはどうすればよいですか?
- 21. 文字列内の部分文字列を交換するにはどうすればよいですか?
- 22. 変数文字列の一部を保存するにはどうすればよいですか?
- 23. 文字列内の1文字を大文字にするにはどうすればいいですか
- 24. Powershellで文字列を生データとして保存するにはどうすればよいですか?
- 25. 文字列を7ビット形式で保存するにはどうすればよいですか?
- 26. 別の文字列で1文字列内の部分文字列の存在を検出するにはどうすればよいですか?
- 27. 配列内の各メモリブロック内に文字列を入力するにはどうすればよいですか?
- 28. スクリプト内の文字列から非文字を削除するにはどうすればよいですか?
- 29. リスト内の文字列から文字を削除するにはどうすればよいですか?
- 30. これはどのように機能しますか?配列内の文字列の保存について
このソリューションでは、HTTPスタック全体を2回以上オーバーヘッドするオーバーヘッドが発生します。これは、文字通りワイヤを介してコンテンツをダウンロードすることなく、これを一度に行うことが可能でなければなりません。 –