Webformsを使用して長年にわたってASP.Netアプリケーションを開発しましたが、私はいくつかのMVCアプリケーションを作成しましたが、フレームワークをフルに使用したことはありません。プロジェクト。しかし、私はMVC構造体を使用していますが、私はまだ古い方法、つまり@ Html.BeginFormなどを使用せず、代わりにユーザーにタグなどを割り当てます。MVCのモデルクラスとデータクラスの理解
私は最近別のプロジェクトを開始しましたが、正しいMVC機能を使用したい。
私はデザインパターンのベストプラクティスについて読んでいます。私のソリューションでは、MVCアプリケーション、テスト、およびデータ(データベースに接続するクラスライブラリ)用のプロジェクトがあります。私はEntity Frameworkを使用していませんが、View Modelのクラスを作成する適切な方法についてはまだ疑問に思っています。私はビューにレンダリングしたい
私はクラスのコールユーザーを持っている私のデータライブラリのクラスでpublic class User
{
public long Id { get; set; }
[Required]
public string Name { get; set; }
[Required]
public string Email { get; set; }
[Required]
public long RoleId { get; set; }
}
フィールドは名前、電子メール、およびRoleIdためのドロップダウンリストです。したがって、ビュー上のモデルでは、データクラスと同じである必要はありません。モデルビュークラスが正しくありませんか?
public class UserModel
{
public Data.User User { get; set; }
public IEnumerable<KeyValuePair<long,string>> RoleList { get; set; }
}
尋ねる理由は、当初、私は常にそのモデルクラスは、私はほとんどの場合、そうでないことをグーグルで読んだことが、あなたのデータクラスと同じであるべきと仮定し、ということです。これは正しいです?
これはビューの正しい実装ですか?あなたのケースでは、あなたがデータモデルが特定され、それの役割を持つユーザーの情報や収集をしているUserModelクラスを、持っているよう
@using (Html.BeginForm())
{
@Html.LabelFor(m=>m.User.Name)
@Html.TextAreaFor(m=>m.User.Name)
<br/>
@Html.LabelFor(m => m.User.Email)
@Html.TextAreaFor(m => m.User.Email)
<br />
@Html.LabelFor(m => m.User.RoleId)
@Html.DropDownListFor(m => m.User.RoleId, new SelectList(Model.RoleList,
"Value", "Key"),"--Please Select--")
}
クイックレスポンスのための@Ehsanに感謝します。私の例では、** "UserModel" Model View **クラスで** "User"データクラス**を使用するのが正しいですか?** "User" Data Class **のコピーを作成する必要があります** MVCプロジェクトを作成し、モデルビューで使用しますか?これは私の例が正しいことを意味しますか?ありがとう。 –
それは、あなたがすべてのプロパティをビューでアクセスする必要がある場合は、既存のものを再利用することができますが、より多くのプロパティを追加する必要がある場合、またはそれらをmvcプロジェクトで公開されないように削除する必要がある場合は、別。 –