アプリ版:「スタンプのみでお礼する」機能のリリースについて

いつも勉強させてもらっております。
ASP.NET MVC3で、ビューに渡すモデルを用意するのですが、最近javascriptをよく使うので、一発で展開できるようにできないかと思っています。

現在は、いったん起動後、jQueryで、Ajax JSONで取得しています。こちらだとすぐjavascriptのオブジェクトが取得できるので。

javascriptで一発展開というのは例えば、
public class HogeClass
{
 public string moge { get; set; }
 public List<string> fugas { get; set; }
}
があって、ビューモデルとして
public ActionResult HogeAction(){
 var hogeObj = new HogeClass();
 return View("hoge", hogeObj);
}
のようにビューへ渡して、

ビューの"hoge.cshtml"内部で、
<script type="text/javascript">
 var hogeObj = <%=Model %>; // こんなので通るわけないですよね
</script>
とかできたらいいなあ、という話です。

いちいち起動のたびにAjaxで読み直すのは速度のこともあるし、気になります。
これまでは全部サーバでやってたのでこんなこと考えなかったんですが、皆さんはどうされてます?

A 回答 (2件)

AjaxでJSON渡しをやっているんだから、同じこと(シリアライズ)をやればいいんだよ。



<script type="text/javascript">
@{
 var serializer = new JavaScriptSerializer();
 var value = serializer.Serialize(Model);
}
var hogeObj = @value;
</script>

JSONに渡せる程度のオブジェクトだったら、これでいけると思う。
    • good
    • 1
この回答へのお礼

shockazさま、ありがとうございます。
言われてみればなるほど、というか、完全なシリアライズですね!
これを思いつけなかったんです。
この方法なら、けっこう複雑なオブジェくトでも渡せるし、jsで部分的に切り出すこともできますね。。
ありがとうございます。
これで一歩、前へ進めます!

お礼日時:2012/09/04 19:25

> var hogeObj = <%=Model %>; // こんなので通るわけないですよね



まあ、たしかにこのまま通りはしませんが。
Modelの中身(データ)を展開してJavaScriptのオブジェクトを生成するようなJavaScriptの
ソースを作成するようなことができればいいわけですよね。
このあたり、HogeClass専用の自分で展開するためのHTMLヘルパー(っていうんだっけかな?)を
作る、といった作業だったらそんなに難しくないような気がします。
    • good
    • 0
この回答へのお礼

onos様、いつもありがとうございます。
いつも悩むのですが、@.getJSONなどでJSON取得した場合は、すぐJavascriptのオブジェクトにできるのに、Model経由でJavaScriptに渡せないのが気にいりません。

Htmlヘルパーメソッドで文字列に変換する方法。。なるほど。いい考えかと。
ちょっとやってみます。
ありがとうございました!

お礼日時:2012/08/31 22:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています