質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

.NET Framework 4.0

Microsoft Windows用のソフトウェア開発環境/実行環境である .NET Frameworkの4番目のメジャーバージョンです。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

解決済

1回答

2038閲覧

ASP.NETでModelのエンコードをまとめたい

nao_1218s

総合スコア2

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

.NET Framework 4.0

Microsoft Windows用のソフトウェア開発環境/実行環境である .NET Frameworkの4番目のメジャーバージョンです。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

0クリップ

投稿2021/08/25 01:08

編集2021/08/25 23:31

ASP.NETのmodelの方で作成したリストをJavaScriptのライブラリである「Chart.js」を用いてグラフ描画したいと考えています。

リスト名をaaa,bbb,cccの3つとしてscriptタグ内に

javascript

1var a = '@HTML.Raw(JSON.Encode(Model.aaa))'; 2var b = '@HTML.Raw(JSON.Encode(Model.bbb))'; 3var c = '@HTML.Raw(JSON.Encode(Model.ccc))'; 4 5var jsA = JSON.parse(a); 6var jsB = JSON.parse(b); 7var jsC = JSON.parse(c);

と記述し、「jsA,jsB,jsC」を用いてグラフ描画することは出来るのですが、エンコード部分を1行に
まとめたいのですが下記の方法ではグラフが表示されませんでした。

javascript

1var md = '@HTML.Raw(JSON.Encode(Model))'; 2 3var jsA = JSON.parse(md.aaa); 4var jsB = JSON.parse(md.bbb); 5var jsC = JSON.parse(md.ccc);

自分のやり方が間違っているのか、それとも描画出来ているコードでしか実現出来ないのかどなたかお分かりいただける方、ご教授頂けると幸いです。

追記:環境の記載を忘れていました。以下になります。
windows10、VisualStudio 16.9.2、.NET Framework4.7.2

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/08/25 02:20

ASP.NET のタグをつけてください。 Model は controller から渡されるものですか? その中身はどうなっているのですか?  「エンコード部分を1行にまとめたい」という理由は何ですか? できている方でやれば済む話ではないのでしょうか?
退会済みユーザー

退会済みユーザー

2021/08/25 22:43

質問者さん、無言ですが、回答したのでそれに対するフィードバックを書きましょう。役に立った/立たなかったぐらいはすぐ返せるはず。役に立たなかったなら、どこがダメだったかを書くと、より質問者さんが期待する答えに近いものが出てくるかも。とにかく無言で放置は NG です。
nao_1218s

2021/08/25 23:46

すみません私用によりお返事できませんでした。ご回答ありがとうございます。こちらがやりたかったこともご想像された通りです。ありがとうございました。
guest

回答1

0

ベストアンサー

質問のコメントに返事がないのでいろいろ不明ですが、想像を膨らませてレスしておきます。

以下のようなクラス定義があって、

public class MyModel { public AAA aaa { get; set; } public BBB bbb { get; set; } public CCC ccc { get; set; } } public class AAA { // ・・・省略・・・ } public class BBB { // ・・・省略・・・ } public class CCC { // ・・・省略・・・ }

それを Controller の Action Method で初期化して、

public ActionResult Chart() { var model = new MyModel { aaa = new AAA { ・・・省略・・・ }, bbb = new BBB { ・・・省略・・・ }, ccc = new CCC { ・・・省略・・・ } }; return View(model); }

View に渡しているのであろうと想像しています。

@model Mvc5App.Controllers.MyModel @{ ViewBag.Title = "Chart"; } <h2>Chart</h2> @section Scripts { <script type="text/javascript"> var a = '@Html.Raw(Json.Encode(Model.aaa))'; var b = '@Html.Raw(Json.Encode(Model.bbb))'; var c = '@Html.Raw(Json.Encode(Model.ccc))'; var jsA = JSON.parse(a); var jsB = JSON.parse(b); var jsC = JSON.parse(c); </script> }

その想像が正しければ、

エンコード部分を1行にまとめたいのですが下記の方法ではグラフが表示されませんでした。
自分のやり方が間違っているのか、それとも描画出来ているコードでしか実現出来ないのか

・・・というのはその通り間違っていて、「描画出来ているコードでしか実現出来ない」です。

上の View の JavaScript の変数 a, b, c は上のコードの AAA, BBB, CCC という C# のオブジェクトを JSON 文字列にシリアライズしたものです。

jaA, jsB, jsC はその JSON 文字列を JavaScript オブジェクトにデシリアライズしたものになります。それが得られて初めて Chart が描けるということになっているはず。

質問の 2 つ目のコードの中の、

var md = '@HTML.Raw(JSON.Encode(Model))';

で何が得られるか考えてみてください。MyModel を JSON 文字列にシリアライズしたものになります。なので、

var jsA = JSON.parse(md.aaa);

というようなことは意味がないのは分かりますよね。

投稿2021/08/25 06:13

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問