追加したいと思った面白いものがあります。全画面表示を一度しか読み込まないアプリケーションを開発しました。それ以降は、ajaxのみを使用してサーバーに通信を戻します。1ページをロードするだけで十分でした(ここでの私の理由は重要ではありません)。興味深いのは、JavaScriptで操作するデータと、表示する部分的なビューを返す必要があるという点です。これを2つの別々のアクションメソッドへの2つの呼び出しに分割することもできましたが、もう少し楽しいものを使用することにしました。
見てみな:
public JsonResult MyJsonObject(string someData)
{
return Json(new { SomeData = someData, PartialView = RenderPartialViewToString("JsonPartialView", null) }, JsonRequestBehavior.AllowGet);
}
あなたが尋ねるかもしれないRenderPartialViewToString()とは何ですか?これは、ここのクールさの小さなナゲットです。
protected string RenderPartialViewToString(string viewName, object model)
{
ViewData.Model = model;
using (StringWriter sw = new StringWriter())
{
ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName);
ViewContext viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
viewResult.View.Render(viewContext, sw);
return sw.GetStringBuilder().ToString();
}
}
私はこれでパフォーマンステストを行っていないので、JsonResultの1つのアクションメソッドとParticalViewResultの1つを呼び出すよりも多少オーバーヘッドがかかるかどうかはわかりませんが、それでもかなりクールだと思いました。部分的なビューを文字列にシリアル化し、パラメーターの1つとしてJsonと共に送信します。次に、JQueryを使用してそのパラメーターを取得し、適切なDOMノードにスラップします:)
あなたが私のハイブリッドについてどう思うか教えてください!