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

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

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

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

Azure

Azureは、マイクロソフトのクラウド プラットフォームで、旧称は Windows Azureです。PaaSとIaaSを組み合わせることで、 コンピューティング・ストレージ・データ・ネットワーキング・アプリケーションなど多くの機能を持ちます。

ASP.NET

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

Q&A

解決済

3回答

26027閲覧

ASP.NETでControllerからViewに表示させるやり方

退会済みユーザー

退会済みユーザー

総合スコア0

C#

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

Azure

Azureは、マイクロソフトのクラウド プラットフォームで、旧称は Windows Azureです。PaaSとIaaSを組み合わせることで、 コンピューティング・ストレージ・データ・ネットワーキング・アプリケーションなど多くの機能を持ちます。

ASP.NET

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

0グッド

0クリップ

投稿2017/03/02 01:09

編集2017/03/02 01:11

ASP.NET MVC5で環境はVisual Stadio2015です。
言語はC#でwebアプリケーションを作成しています。

前回前々回に引き続き、ほぼ教えて頂いて作成しています。
前回質問:https://teratail.com/questions/67584

今回はViewについて教えていただきたいです。
前回、Contorollerで処理したresultと notApplicableをViewで表示
したいのですが、Razor?などがよくわかっておらずどうすればいいのでしょうか。
Viewで表示するためには、ControllerからViewbugやViewdataなどでViewにデータを渡すということは本でなんとなく理解しました。

すみませんが、よろしくお願いします。

controller

C#

1using System; 2using System.Collections.Generic; 3using System.Linq; 4using System.Web; 5using System.Web.Mvc; 6using System.Text; 7using System.Net.Http; 8using System.Collections; 9using System.Web.Script.Serialization; 10using System.Threading.Tasks; 11using System.Net.Http.Headers; 12using System.Runtime.Serialization; 13using System.Runtime.Serialization.Json; 14using System.Xml.Serialization; 15 16namespace WebApplication1.Controllers 17{ 18 public class HomeController : Controller 19 { 20 string schoolBaseUrl = "https:~"; 21 string schoolDataArea = "abcde"; 22 23 //mappingsを定義 24 Dictionary<String, Kamoku> mappings = new Dictionary<String, Kamoku>() 25 { 26 {"1234", new Kamoku {Id = "10000", Name = "国語" }}, 27 {"1112", new Kamoku {Id = "10000", Name = "理科" }}, 28 {"1232, new Kamoku {Id = "10000", Name = "社会" }}, 29 {"1311", new Kamoku {Id = "10000", Name = "数学" }}, 30 {"1300", new Kamoku {Id = "10000", Name = "歴史" }}, 31 {"1400", new Kamoku {Id = "10000", Name = "英語" }}, 32 {"1178", new Kamoku {Id = "20000", Name = "体育" }}, 33 {"1423", new Kamoku {Id = "20000", Name = "宗教" }}, 34 35 36 37 public ActionResult Test() 38 { 39 try 40 { 41 Task<System.IO.Stream> response1 = postRequest(); 42 System.IO.Stream res1 = response1.Result; 43 // JSONデシリアライズ 44 var serializer1 = new DataContractJsonSerializer(typeof(PcaToken)); 45 PcaToken token = (PcaToken)serializer1.ReadObject(res1); 46 47 /* 48 Task<System.IO.Stream> response2 = getRequest(); 49 System.IO.Stream res2 = response2.Result; 50 var serializer2 = new DataContractJsonSerializer(typeof(List<CashOutUI>)); 51 List<CashOutUI> info = (List<CashOutUI>)serializer2.ReadObject(res2); 52 */ 53 54 Task<System.IO.Stream> response3 = getRequest(token.access_token); 55 System.IO.Stream res3 = response3.Result; 56 // XMLデシリアライズ 57 var serializer3 = new XmlSerializer(typeof(List<Ab>)); 58 59 60List<Ab> list = (List<Ab>)serializer3.Deserialize(res3); 61List<Kamoku> result = new List<Kamoku>(); 62 63var notApplicable = new List<String>(); 64foreach (Ab item in list) 65{ 66 Kamoku kamoku; 67 if (mappings.TryGetValue(item.Code, out kamoku)) 68 { 69 result.Add(kamoku);//紐付けが一致してkamokuを追加したresult 70 } 71 else 72 { 73 notApplicable.Add(item.Code);//紐付けが一致しなかったnotApplicable 74 } 75} 76 77 78 //Task<string> response4 = getRequestStr(token.access_token); 79 //string res4 = response4.Result; 80 81 //ViewBag.Message = info.Count; 82 //ViewBag.Message = token.access_token; 83 ViewBag.Message = ""; 84 } 85 catch (Exception ex) 86 { 87 Console.WriteLine(ex.Message); 88 } 89 90 91 return View(); 92 } 93 94 95 [DataContract] 96 public class Ab //WebAPIからとれる情報のクラス 97 { 98 [DataMember] 99 public string Id { get; set; } 100 [DataMember] 101 public string Number { get; set; } 102 [DataMember] 103 public string Code { get; set; } 104 [DataMember] 105 public string Deletable { get; set; } 106 [DataMember] 107 public string Name { get; set; } 108 [DataMember] 109 110 //Kamoku クラス 111 public class Kamoku //科目のIDと名称 112 { 113 public string Id { get; set; } 114 public string Name { get; set; } 115 } 116} 117

View

Html

1@{ 2 ViewBag.Title = "About"; 3} 4<h2>@ViewBag.Title.</h2> 5<h3>@ViewBag.Message</h3> 6 7 8//ここに、resultとnotApplicableをそれぞれ表示させたい・・・

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

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

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

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

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

guest

回答3

0

ちゃんとソースを読んでないのでエラーが出るかもしれません。。。
ただ表示させるのであればController側ではReturnの前にViewBagにオブジェクトを詰めます

C#

1 ViewBag.Result = result; 2 ViewBag.NotApplicable = notApplicable; 3 return View();

View側では

C#

1@foreach (var result in ViewBag.Result) 2{ 3 <h2>@result</h2> 4} 5 6@foreach (var notApplicable in ViewBag.NotApplicable) 7{ 8 <h2>@notApplicable</h2> 9}

ただ、せっかくViewで表示するClassを作ってるならば
クラスの中にResultとNotApplicableを定義してあげて
return View(object)というやり方も出来ます。こっちのがおすすめです。

投稿2017/03/02 02:26

AmisakiGou

総合スコア64

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

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

退会済みユーザー

退会済みユーザー

2017/03/02 07:43

AmisakiGouさん、ありがとうございます。
guest

0

ベストアンサー

いくつか方法はあるかもしれませんが、以下はあくまでモデルを使用する方法です。
Controllerではモデルを返し、View側はそのモデルを宣言してあげれば良いと思います。
-- View側

@model List<Kamoku> @foreach(var data in Model) { <h1>@data.プロパティ名<h1> }

-- Controller側

public AciocResult Test() { // 処理 ・ ・ ・ return View(result); }

Viewのモデル宣言時に名前空間が必要となる場合もあります。
また複数のモデルを渡すのであれば、複数のモデルを統合した1つのモデルを渡すこともできます。
参考

投稿2017/03/09 07:16

f_horizon

総合スコア163

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

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

0

とりあえず result(List<Kamoku> 型)を表示する View を Visual Studio のスキャフォールディング機能を利用して自動生成してみませんか? (notApplicable の方はそのあとで考えるということで一歩ずつ)

Controller のアクションメソッド Test の戻り値を return View(); から return View(result); に変更してから、アクションメソッドのコードのどこかを右クリックすればダイアログが現れるので、そこで[ビューの追加(D)...」を選んで作業を進めてみてください。

投稿2017/03/02 02:32

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2017/03/02 07:46

SurferOnWwwさん、毎回質問に丁寧に答えて下さりありがとうございます!! 教えていただいた通り、ビューの追加をしてみます。 ゆっくりやることも大切ですね、
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.53%

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

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

質問する

関連した質問