ASP.NET MVCでのモデル作成方法についての質問

このQ&Aのポイント
  • ASP.NET MVCでモデルを作成する方法について、皆様の意見を教えてください。
  • ASP.NET MVCでモデルを定義する際に、ドメインモデル、拡張ドメインモデル、ビューモデル、フォームモデルの4種類を使う必要があるのでしょうか?
  • モデル間のデータのやりとりや作業量が増えるので、省力化する方法はありますか?
回答を見る
  • ベストアンサー

【ASP.NET MVC】モデルの作り方

ASP.NET MVCでのモデルについて、皆様はどのように作成しておられますか? ASP.NET MVCで何本かWebシステムを構築して、いまだに試行錯誤です。 サンプル例を見ても、実際とはかけ離れた簡単な内容で、あまり参考になりません。 自分が見たいくつかのサイトではこのように書いてありました。 ドメインモデル データベースと1:1で存在する入出力用のモデル。EntityFrameworkで定義する。 拡張ドメインモデル ドメインモデルにプロパティを追加したり、複数のモデルを使いやすくまとめたモデル。 ビューモデル 画面表示するためのモデル。 フォームモデル フォーム入力値を受信するためのモデル。 理屈はわかるのですが、このように4種類もモデルを定義するものなのでしょうか? モデル間のデータのやりとりも大変ですし、定義だけで作業量が半端ない感じです。 継承などをうまく使って省力化する方法とかありますか? 皆さまの方法論をお聞きしたくお願い申し上げます。 ASP.NET MVCに限らず、CakePHPなどの例でも歓迎です。

質問者が選んだベストアンサー

  • ベストアンサー
  • onos
  • ベストアンサー率81% (127/155)
回答No.1

参考にした、というのはASP.NET MVCに特化したサイトでしょうか? 微妙に違うような気がするんですが。 ASP.NET MVCの場合、記述されているフォームモデルとビューモデルは合わせて一つに しておいたほうがいろいろと用意されている仕組みが使いやすいです。 主にバリデーションがらみの仕組みとかですが。 で、このフォーム/ビューモデル(?)と実際のDBとデータのやり取りをするモデルの 間にはなにか詰め替えする仕組みがはいっているほうがつかいやすいと思ってます。 #サンプルとかだと、EFのモデルそのものをフォーム/ビューでも使っていることが  多いですが、実業務だともう一工夫必要かな、と思います。 ドメインモデルをEFで定義する、と考えるとまた間違えそーな気が。 一般的にドメインモデルと呼ぶものがどういうものかはきちんと調べたほうがよいと 思います。 このあたり、記述している人によって微妙に意味が異なることがあり、それを 大雑把に同じものとして理解しようとすると混乱するもとになると思います。 まぁ、自分でもまだ試行錯誤している状況なので、他のかたの話も聞いてみたいところではあります。

nayutax
質問者

お礼

onoos様、いつもありがとうございます。 色々な方のご意見を聞こうと思い、開けた状態にしておきましたが、なかなか回答がないようなので、onos様の回答をBAとさせていただきます。 自分の「ドメインモデル」の理解に難があったようですが、人により用語の使い方に癖がある、というのが正直なところのようですね。 onos様のご意見を参考に取組んでみて、また改めて質問させていただきます。

関連するQ&A

  • 【ASP.NET MVC3】共通ビュークラス

    いつも大変にお世話になっています。 ASP.NET MVC3で作成しているシステムで、すべてのビューに、共通のプロパティを用意したいと考えております。 以前のASP.NETでは、System.Web.UI.Page を継承したカスタムクラスを継承していました。 public MyCustomPage : System.Web.UI.Page {  // 共通のプロパティやメソッド } public class Index : MyCustomPage {  public page_load(Object o, EventArgs e){ // ページロード処理 } }; このような継承定義をビューのクラスで行いたく思います。 MVC3のビューで、たとえば、MyViewModelというビューモデルを埋め込んだ、以下のようなクラスは、どのやって定義したら良いのでしょう? @inherits MyCustomView<MyViewModel> 土曜の夜だというのに、まだ帰れません(泣 何とぞよろしくお願い致します。

  • 【ASP.NET MVC】フォームヘルパーの是非

    いつも大変にお世話になっています。 今回も例によってASP.NET MVCの質問です。 ASP.NET MVCでは、Htmlヘルパーを使用してビューを記述するのが常識かと思います。 例) @Html.Textbox("name", Model.name) 今回、デザイナが加わる仕事で、完成後にデザイナ側でフォーム訂正が必要になることが予想されます。 またその際、デザイナから「できるだけ独自仕様(Lazorのこと?)のテンプレートを使用しないように」とのお達しがあったため、苦慮しております。 質問です。 Htmlフォームヘルパーを使わずに、純粋なHTML記述を行った場合、どのような支障が考えられますか? 要件: @Html.Textbox("name", Model.name) と書かずに。 <input type="text" id="name" name="name" /> と(HTML展開後の文法で)書く場合の違いを知りたい です。同じ動作をするのでしょうか?また、違いの程度は? です。なにとぞよろしくお願いします。

  • asp.net MVC

    asp.net MVC環境でもENTITY FRAMEWORK POCOについて質問です。 エンティティ・クラス(POCO)はデータベースのテーブルからしか定義(リンク)できない のでしょうか。 たとえばDBのビューをエンティティ・クラスとして定義はできないのでしょうか。 あるテーブルのあるフィールドをグループ化しSUMしたビューをエンティティ・クラスとして 定義したかったのです。 仮にできないとすると、LINQ to SQL などで加工(グループ化)するしかないのでしょうか。 もし、それしかできないとすると扱いずらさと、効率の悪さを感じます。 自分が分かっておらず方法があれば良いと思い、質問させていただきました。 ご教授よろしくお願いします。

  • SmartyとMVCフレームワークに関して

    殆どMVCフレームワークを使用したことがなく 今更ながら覚えようかと思っています。 MVCフレームワークはCakePHPかCodeIgniterどちらか悩んでおり モデル設計が殆ど必要ない分CodeIgniterがいい気がしていますが 実際のところどちらのフレームワークとSmartyを使用するのがいいのでしょうか? 今回は小規模~中規模のサイトの予定なので簡単に導入取得ができるものが希望です。 CodeIgniter+Smartyの場合、導入方法のサイトが古いものばかり(新しい記事もあるが違う方法)で 最近の最も使われている手法が分かりません・・・ 経験者の方などのご教示お願いします。 CodeIgniterのライセンスが変わったとかで日本サイトの更新が停止しているようなので将来性のことも含めてご回答お願いします>< *導入方法などもご教示いただけましたらお手数とは思いますがよろしくお願いいたします><

    • ベストアンサー
    • PHP
  • ASP.NET MVC エンティティモデルの定義

    ASP.NET MVC コードファーストでの質問です。 エンティティモデルを定義する際、実際のテーブル構造と異なるモデルを 定義することは可能でしょうか? Imports System.ComponentModel.DataAnnotations Public Class SampleData Public Property Height As Long //実際に存在するカラム <Column("Taiju")> _ Public Property Weight As Long //実際に存在しないカラム(ただし「Taiju」というカラムが存在する) Public Property Bmi As Long //実際に存在しないカラム End Class カラム名が違う場合(上記Weight)、Column属性を指定すれば、指定カラムからデータを取得してくれます。 実際に存在しないカラム(上記Bmi)を定義した場合、このままですとデータ取得時に 「System.Data.SqlClient.SqlException: 列名 'Bmi' が無効です。」となります。 データ取得時にBmiを取得対象外としたいのですが、そのようなことは可能でしょうか? BmiをPrivate変数としてgetter./setter用Functionを定義すれば回避は可能なのですが、 スマートではないので、属性の指定等で対応できればと考えております。

  • 【ASP.NET MVC】フォーム受信

    回答者の皆様にはいつもお世話になっています。 ASP.NET MVC3の案件で、外部からのPOST送信を受信する仕様が追加されため、アクションメソッドを実装しているのですが、うまくいきません。 さんざん問い合わせたあげく、先方の送信フォームがこのようになっていることがわかりました。 <form method="post" action="http://xxxxx/recieve">  <input name="cbox[]" value="東京" checked="checked"/>  <input name="cbox[]" value="大阪" checked="checked"/>  <input name="cbox[]" value="京都"/> </form> phpなどではこの場合、変数cboxに配列値 {"東京","大阪"}が入るらしいのですが、ASP.NET MVCではどう受信したらいいのでしょう? public ActionResult Recieve(List<string> cbox){  // cboxの内容が{"東京"}(要素1個のリスト)になってしまいます }; どなたかお助けください。ヘルプです!

  • 【cakePHP】複数のモデルを使用するページを表示するには。

    【cakePHP】複数のモデルを使用するページを表示するには。 cakePHP でwebアプリケーションを作成しようとしています。 チュートリアルでブログなど作成し、ある程度概要はつかめました。 1つのモデルを表示、編集する方法は理解できました。 イメージが掴めないのが、以下の場合です。 サイトのトップページなどは、通常複数のモデルの内容が記載されると思います。 cakePHPを使用した場合、基本的に1つのモデルにアクセスして、その中で他のモデルを呼び出すことになるのでは無いかと予測しています。 この場合、MVCの考え方とは、違うものになってしまうと思います。 どのようにして、複数のモデル(例えば、ブログの投稿とスケジュール)を1つのページに表示するべきでしょうか。 ご教授いただけると幸いです。 ***************** ・PHPのバージョンは5.x ・cakePHPのバージョンは1.3.x

    • ベストアンサー
    • PHP
  • ASP.NET MVCでFancyboxを使いたい

    いつも大変お世話になっています。 今、ASP.NET MVCでサイトを構築中です。苦戦してます。。 中に入力フォームがあり、その中でサブウィンドウ的に入力ウィンドウを開いて、補足的な入力を行う仕様になっています。 普通なら、別の入力画面に遷移させるのですが、あまりにも入力項目が少ないため、遷移はさせたくなく、また、別ウィンドウもポップアップ対策などあって採用できません。 そこで、ヘルプウィンドウなどで使用している「Fancybox」を使いたいのですが、ASP.NETのプログラムサンプルがなく、大変に苦戦しております。 http://fancybox.net どなたか、参考意見だけでも拝聴できないでしょうか? 藁にもすがるつもりでお願いいたします。 【仕様】 ASP.NET MVC3(IIS7.5)+jQuery 【要件】 ドロップダウンリストである項目を選ぶ -> Fancyboxで入力ウィンドウを「モーダルで」開く -> テキストを入力 -> 「閉じる」ボタンでFancyboxを閉じる(未入力状態では閉じるボタン不活性) フォーム全体の入力完了後、「送信」ボタンで内容を送信 【不明点1】 ドロップダウンで選んだ項目によって、Fancybox画面が変化するため、動的にフォームを表示する必要があので、その方法(静的htmlの表示はできています) 【不明点2】 Fancyboxでの入力値を保存する方法 現状は以下のコードで試していますが、"error loading response"とか出て何も表示されません。 $('#selection').change(function(){ $.fn.fancybox({ // 何か他のオプションが必要なのでしょうか? href : 'subpanel?type=albyter?type=' + $(this).val(); ); } }); public ActionResult subpanel(string type){ // ここもわかりません。返すのはビュー?それともパーシャルビュー? // 今はパーシャルビューを返していますが。。 var subPanelModel = new SubPanelModel(type); return Partial("subpanel", subPanelModel); }

  • asp.net mvcを利用する場合の複数テーブルの扱い方

    お世話になります。 asp.netオフィシャルサイト上のデモを見て、asp.net mvcを使って、アプリを作りたいんですが、DBにテーブルが複数ある場合、複数のテーブルからデータを抽出し、viewに表示する方法が分からなくて困ってます。 ご存知の方いらっしゃらましたら教えてください。 よろしくお願いします。

  • CakePHPはなぜ普及しない

    弱小SIerでPMの端くれやってます。 普段はsastrutsやasp.net mvcでの基幹業務系案件が多いのですが、今回新しく、一般向けのLAMP案件を担当することになり、仲良くしていただいているフリーPGの方から、cakePHPについて推薦を受けました。 いろいろと調べていると、自分がこれまで馴染んでいるMVC系で、責任範囲は明確だし、コーディングはけっこう簡潔、コミュニティも活発で、良いことづくめのような気がしました。 で、社内および(及び主として開発担当される)外部協力会社数社に相談をもちかけましたたところ、あっさりNGを出されました。 皆様が言うには、あえてcakeのような外部のフレームワークを採用しなくても、MVCモデルや、テンプレート対応は十分に可能で、高品質で迅速な開発が可能だそうです。 一部の熱狂的な開発者をのぞき、そもそも実開発で、CakePHPはほとんど採用されていない、ということでした。 自分としては判断に苦しむ内容で、相手が学習コストを嫌っているだけのように思えるのですが、皆様の中で同様に、「CakePHPはここが問題(だから使わない)」というお考えをお持ちの方がいらっしゃいましたら、具体的な問題点をお聞かせ願えないでしょうか? Web上の記事には、基本的(ていうか勉強レベル)のものしかなく、具体的な開発例を交えての評価が少ないような気がしていて、今後のこともあり、非常に気になります。 php案件での開発における基本スタンスに関わる問題なと思いますので、ご教示下さい。 よろしくお願いいたします。

    • 締切済み
    • PHP

専門家に質問してみよう