質問: 現在C#で開発しています。 C#を使うのは初めてです。 LAMPでの開発経験はあり、フレームワークはcakephp、Zendの経験があります。 他はJavaScriptの経験もあります。 zendの場合などでは コントローラで $this->view->変数名=セットする値; などでview側で変数、配列などなんでも使用することができるかと思います。 このような形でC#で使用できないのでしょうか 開発中のC#ではコントローラからmodelを呼び出し consoleログでDB接続、select文で値を取得できるところまでは出来ております。 この取得した値をphpの $this->view->変数名=セットする値; のような形で C#でもview側で配列を使用したいと考えております。 C#では初歩のViewDataを文字列を代入して使用する、 @Html.Action(アクション名)などでcshtmlを連結する までは理解しています。 また、phpとC#での違いの voidはreturnできない、関数の定義として戻り値の型を定義するところまでは理解しております。 コントローラから配列、変数の場合、どのように渡すのか またview側でそれをどのように受け取りどのように使用するのか不明です。 phpなどといった簡単な高級言語しかやったことない開発にわかですが、ご教授いただけたら幸いです。 環境はvs2017、mvc5、C#7.0、SqlServer2008です。 よろしくお願いいたします。
回答: > > コントローラから配列、変数の場合、どのように渡すのか > > またview側でそれをどのように受け取りどのように使用するのか不明です。 > > > モデル(特定のビューに合わせて作成された、厳密に型指定されたオブジェクト)を使うのが普通です。 一例(あくまで例です)を書きますと以下の通りです。 まず、以下のような class をモデルとして定義します。これを使って View にデータを渡すことを考えます。 ``` public class CustomerName { public string Title { get; set; } public string FirstName { get; set; } public string MiddleName { get; set; } public string LastName { get; set; } } Controller のアクションメソッドで、3 人分の CustomerName オブジェクトを作成し、そのコレクション(List オブジェクト)を View に渡すことにします。コードは以下の通りです。(実際は、SQL Server などの DB から Linq to Entities を利用してデータを取得して設定するケースが多いのですが、それを書くと混乱しそうなので簡略化しました) ``` public ActionResult CustomerName() { ViewBag.Message = "ViewBag 経由で取得した情報"; List model = new List { new CustomerName { Title = "Mr.", FirstName = "Orlando", LastName = "Gee" }, new CustomerName { Title = "Mr.", FirstName = "Keith", LastName = "Harris" }, new CustomerName { Title = "Ms.", FirstName = "Donna", LastName = "Carreras" } }; return View(model); } アクションメソッドから渡されたモデルを View で使用するには、以下のコードのように @model として型を宣言する必要があります。3 人分の CustomerName オブジェクトのコレクションなので IEnumerable 型として宣言してます。Mvc5App.Models は名前空間名です オデッセイ RA1~4 前期/後期 テールカバー アウトサイダー シックスセンス。 ``` @model IEnumerable @{ ViewBag.Title = "CustomerName"; } CustomerName @ViewBag.Message @Html.DisplayNameFor(model => model.Title) @Html.DisplayNameFor(model => model.FirstName) @Html.DisplayNameFor(model => model.LastName) @foreach (var item in Model) { @Html.DisplayFor(modelItem => item.Title) @Html.DisplayFor(modelItem => item.FirstName) @Html.DisplayFor(modelItem => item.LastName) } 上のコードで Model には IEnumerable オブジェクトが渡されます。 また、DisplayNameFor のラムダ式の引数には CustomrerName オブジェクトが、DisplayFor のラムダ式引数には IEnumerable オブジェクトが渡されます。 モデルの他に、ViewData や ViewBag のようなディクショナリを使ってアクションメソッドから View にデータを渡すこともできます。上のコードには ViewBag を使って例を書きました。 投稿 2018/06/29 16:14 * *add*高評価4 回答の評価を上げる 以下のような回答は評価を上げましょう + 正しい回答 + わかりやすい回答 + ためになる回答 評価が高い回答ほどページの上位に表示されます。 * *remove*低評価0 回答の評価を下げる 下記のような回答は推奨されていません。 + 間違っている回答 + 質問の回答になっていない投稿 + スパムや攻撃的な表現を用いた投稿 評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。 + + 2018/07/02 08:46 細かくご説明いただき、ありがとうございます。 List型でviewに渡すことも出来るのですね 【USA在庫あり】 K WSM ピストンキット カワサキ900 73mm スタンダード 13001-3720 010-840 JP店。それすら知らなかったです。。。 ご教示いただいたソースを実際に使用してみて、基礎を固めてから行いたいと思います。 今後ともよろしくお願いいたします。 細かくご説明いただき、ありがとうございます。 List型でviewに渡すことも出来るのですね 【特価品】PIRELLI(ピレリ) DIABLO SUPERCORSA SP V2 120/70ZR17 200/55ZR17 フロント リア 前後セット ディアブロ スーパーコルサSP V2。それすら知らなかったです。。。 ご教示いただいたソースを実際に使用してみて、基礎を固めてから行いたいと思います。 今後ともよろしくお願いいたします。 キャンセル完了する - 2018/07/02 09:19 List 型に限らず、C# のオブジェクトなら何でも渡せます。ただし、何でも可と言っても、そうすることが良いかどうかは話が別です。上にも書きましたが「特定のビューに合わせて作成された、厳密に型指定されたオブジェクト」にするのか、View から Action Method に渡すケースを考えると、セキュリティの面などでもよさそうです。 List 型に限らず、C# のオブジェクトなら何でも渡せます。ただし、何でも可と言っても、そうすることが良いかどうかは話が別です。上にも書きましたが「特定のビューに合わせて作成された、厳密に型指定されたオブジェクト」にするのか、View から Action Method に渡すケースを考えると、セキュリティの面などでもよさそうです。 キャンセル 完了する - 2018/07/05 10:00 ありがとうございます。とても勉強になります! 現在行いたいのは、とても単純なもので 検索ボックス、プルダウンなどで同じページ(action)へpostして検索したら帳票を出すといったものです。 phpだとさくっとできるのですが、C#では行き詰ってしょうがないです。 80/85 ノア noah リアバンパーカバー / リアハーフ【トヨタモデリスタ】ノア ZRR80/85G/ノア ハイブリッド ZWR80G G/Xグレード MODELLISTA ver.2 リヤスカート メーカー塗装 ホワイトパールクリスタルシャイン。。 http://kitigai.hatenablog.com/entry/2017/12/18/201513 上記などは、なんでも渡せるといったところの参考サイトになりますかね。。。 SurferOnWww 様の仰る通りでフローや行いたい内容を考えた上で記述していきたいと思っております。 ありがとうございます。とても勉強になります! 現在行いたいのは、とても単純なもので 検索ボックス、プルダウンなどで同じページ(action)へpostして検索したら帳票を出すといったものです。 phpだとさくっとできるのですが、C#では行き詰ってしょうがないです。。。 http://kitigai.hatenablog.com/entry/2017/12/18/201513 上記などは、なんでも渡せるといったところの参考サイトになりますかね。。。 SurferOnWww 様の仰る通りでフローや行いたい内容を考えた上で記述していきたいと思っております。 キャンセル 完了する - 2018/07/05 12:04 > http://kitigai.hatenablog.com/entry/2017/12/18/201513 > 上記などは、なんでも渡せるといったところの参考サイトになりますかね 。。。 個人的意見を言わせていただければ、参考にならないので(逆にミスリードされそうなので)、読まない方が良いと思います。 ネットの情報は玉石混交です。玉も多いですが、石もあります(場合によっては毒も)。なので、それを見極めるだけのスキル・知識が必要です。質問者さんには、本を買って体系的に勉強することをお勧めします。 > http://kitigai.hatenablog.com/entry/2017/12/18/201513 > 上記などは、なんでも渡せるといったところの参考サイトになりますかね。。。 個人的意見を言わせていただければ、参考にならないので(逆にミスリードされそうなので)、読まない方が良いと思います。 ネットの情報は玉石混交です。玉も多いですが、石もあります(場合によっては毒も)。なので、それを見極めるだけのスキル・知識が必要です。質問者さんには、本を買って体系的に勉強することをお勧めします。 キャンセル 完了する ``` ``` ```