いつも勉強させてもらっております。
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で読み直すのは速度のこともあるし、気になります。
これまでは全部サーバでやってたのでこんなこと考えなかったんですが、皆さんはどうされてます?
No.2ベストアンサー
- 回答日時:
AjaxでJSON渡しをやっているんだから、同じこと(シリアライズ)をやればいいんだよ。
<script type="text/javascript">
@{
var serializer = new JavaScriptSerializer();
var value = serializer.Serialize(Model);
}
var hogeObj = @value;
</script>
JSONに渡せる程度のオブジェクトだったら、これでいけると思う。
shockazさま、ありがとうございます。
言われてみればなるほど、というか、完全なシリアライズですね!
これを思いつけなかったんです。
この方法なら、けっこう複雑なオブジェくトでも渡せるし、jsで部分的に切り出すこともできますね。。
ありがとうございます。
これで一歩、前へ進めます!
No.1
- 回答日時:
> var hogeObj = <%=Model %>; // こんなので通るわけないですよね
まあ、たしかにこのまま通りはしませんが。
Modelの中身(データ)を展開してJavaScriptのオブジェクトを生成するようなJavaScriptの
ソースを作成するようなことができればいいわけですよね。
このあたり、HogeClass専用の自分で展開するためのHTMLヘルパー(っていうんだっけかな?)を
作る、といった作業だったらそんなに難しくないような気がします。
onos様、いつもありがとうございます。
いつも悩むのですが、@.getJSONなどでJSON取得した場合は、すぐJavascriptのオブジェクトにできるのに、Model経由でJavaScriptに渡せないのが気にいりません。
Htmlヘルパーメソッドで文字列に変換する方法。。なるほど。いい考えかと。
ちょっとやってみます。
ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ちょっと先の未来クイズ第2問
9月9日(月)に発表される「第3回子どもマネー川柳」に入賞する川柳を考えてこちらに投稿してください。
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
asp.net mvcを利用する場合の複数テーブルの扱い方
Visual Basic(VBA)
-
チェックボックス付きのテーブルから、チェックの付いた行のみの値を取得したい
JavaScript
-
テーブルの任意の列を非表示にしたい
HTML・CSS
-
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C#OpenCv V4にのエラーに関する...
-
google apps scriptの終了のさせ方
-
15パズルの作り方が分かりません!
-
googleMapでアイコン変更すると...
-
javascriptの正規表現で変数を扱う
-
googleMapで情報ウィンドウの表...
-
gas スプレッドシートがアクテ...
-
0を自動的に入れたいのですが・・
-
特定のページの画像URL一覧...
-
javascriptで月末の日付を表示...
-
jQuery UI Accordion Plugin(jQ...
-
条件に応じて座席表をつくりた...
-
なぜmatchメソッドがエラーにな...
-
C# 演算 奇数と偶数 表現の仕方
-
JavaScriptのフォントの大きさ
-
Javascriptで指定した位置の文...
-
C#で、ContextMenuStripに動的...
-
句点“。”で区切り、“。”も含め...
-
大分類・中分類・小分類のvalue...
-
同じIDで定義した要素の配列を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C#OpenCv V4にのエラーに関する...
-
食材の期限を管理するためにGAS...
-
google apps scriptの終了のさせ方
-
このプログラムに、王手をかけ...
-
このプログラムに王様の逃げ道...
-
この将棋プログラムに王様ゲッ...
-
ASP.NETのコントロールの値をJa...
-
ジェネレーターの作り方
-
GASでundefinedエラーが出ます
-
なぜmatchメソッドがエラーにな...
-
ASP.NET MVCでObjectをjsに渡す
-
C#で、ContextMenuStripに動的...
-
html javascript リンク先アド...
-
HTMLで作った時報アプリが動き...
-
翌月を取得するGASが分かりません
-
イラレでナンバリングする方法
-
HTMLにWSHを組み込む
-
gas スプレッドシートがアクテ...
-
getElementByIdでASP.NETのText...
-
APIを使って埋め込んだグーグル...
おすすめ情報