2017-01-11 9 views
-1

ビューモデルは必要ありません。 私は学生モデルを使用してビューを作成しようとしていますEntityframework + MVC +足場

public class Person 
    { 
     #region private variables 
     private string _firstName; 
     private string _lastName; 
     private string _middleName; 
     private Gender _gender; 
     #endregion 
     #region public properties 
     public string FirstName 
     { 
      get { return _firstName; } 
      set { _firstName = value; } 
     } 
     public string LastName 
     { 
      get { return _lastName; } 
      set { _lastName = value; } 
     } 
     public string MiddleName 
     { 
      get { return _middleName; } 
      set { _middleName = value; } 
     } 
     public virtual Gender Gender 
     { 
      get { return _gender; } 
      set { _gender = value; } 
     } 
     #endregion 
    } 
public class Student:Person 
    { 
     #region private variables 
     private int _id; 
     private DateTime _dateOfBirth; 
     private bool _isDeleted; 
     private Guradians _guardian; 
     #endregion 
     #region public properties 
     public int ID 
     { 
      get { return _id; } 
      set { _id = value; } 
     } 
     public DateTime DateOfBirth 
     { 
      get { return _dateOfBirth; } 
      set { _dateOfBirth = value; } 
     } 
     public bool IsDeleted 
     { 
      get { return _isDeleted; } 
      set { _isDeleted = value; } 
     } 
     public virtual Guradians Guardian 
     { 
      get { return _guardian; } 
      set { _guardian = value; } 
     } 
     #endregion 
    } 
public class Gender 
    { 
     #region private variable 
     private int _id; 
     private string _description; 
     private bool _isDeleted; 
     #endregion 
     #region public properties 
     public bool IsDeleted 
     { 
      get { return _isDeleted; } 
      set { _isDeleted = value; } 
     } 

     public string Description 
     { 
      get { return _description; } 
      set { _description = value; } 
     } 

     public int ID 
     { 
      get { return _id; } 
      set { _id = value; } 
     } 
     #endregion 
    } 
public class Guradians:Person 
    { 
     #region private variable 
     private int _id; 
     private Relationship _relationship; 
     #endregion 
     #region public properties 
     public int ID 
     { 
      get { return _id; } 
      set { _id = value; } 
     } 
     public Relationship Relationship 
     { 
      get { return _relationship; } 
      set { _relationship = value; } 
     } 

     #endregion 
    } 
public class Relationship 
    { 
     #region private variables 
     private int _id; 
     private string _description; 
     #endregion 
     #region public properties 
     public int ID 
     { 
      get { return _id; } 
      set { _id = value; } 
     } 


     public string Description 
     { 
      get { return _description; } 
      set { _description = value; } 
     } 
     #endregion 
    } 

以下のようにモデルを持って、足場のテンプレート - 作成します。 テンプレートを作成しても、複合プロパティのhtmlヘルパーは作成されません。 私はMVCが初めてです。助けてください。あなたは、エンティティフレームワークコード最初データベース最初をすることができ、データベースを保存する.IF

ビューは

@model PracticeWebApp.Models.Student 

@{ 
    ViewBag.Title = "Index"; 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

<h2>Index</h2> 

@using (Html.BeginForm()) { 
    @Html.AntiForgeryToken() 
    @Html.ValidationSummary(true) 

    <fieldset> 
     <legend>Student</legend> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.DateOfBirth) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.DateOfBirth) 
      @Html.ValidationMessageFor(model => model.DateOfBirth) 
     </div> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.IsDeleted) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.IsDeleted) 
      @Html.ValidationMessageFor(model => model.IsDeleted) 
     </div> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.FirstName) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.FirstName) 
      @Html.ValidationMessageFor(model => model.FirstName) 
     </div> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.LastName) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.LastName) 
      @Html.ValidationMessageFor(model => model.LastName) 
     </div> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.MiddleName) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.MiddleName) 
      @Html.ValidationMessageFor(model => model.MiddleName) 
     </div> 

     <p> 
      <input type="submit" value="Create" /> 
     </p> 
    </fieldset> 
} 

<div> 
    @Html.ActionLink("Back to List", "Index") 
</div> 

@section Scripts { 
    @Scripts.Render("~/bundles/jqueryval") 
} 
+0

「テンプレートを作成しても複雑なプロパティのHTMLヘルパーが作成されない」とはどういう意味ですか(明らかに足場の問題です)。さらに、 'public string FirstName {get;}のようにプライベートフィールドを使わずにプロパティを宣言することもできます。セット; } '。 –

+0

@ TetsuyaYamamoto rさんは、足場の問題を引き起こしている私有財産を持つと言っていますか? –

+0

いいえ、プライベートフィールドはこの問題とは全く関係ありません。私の視点から見ると、足場の問題は、モデルクラス間の関係(基底クラスを拡張するいくつかのクラスを含み、どのプロパティ名が見えていないかがわかります)から来ています。 –

答えて

0

使用主キー外部キーのように見えます。

私はデータの注釈(プライマリ/外部キーなど)なしのモデルからビューを作成するために、足場に継承効果について実験を取っていた

0

コントローラPOSTメソッドを定義し、あなたの問題が継承Genderによって解決することができることを見出しましたPersonクラスに基底クラス:

public class Person : Gender 
{ 
    public String FirstName { get; set; } 
    public String LastName { get; set; } 
    public String MiddleName { get; set; } 
    public virtual Gender Gender { get; set; } 
} 

継承はGenderクラスの仮想財産基準を使用してPersonクラスに全てGenderメンバープロパティを含む、それゆえ、それはのためのHTMLヘルパーを生成しますDescriptionプロパティ:

<div class="editor-label"> 
    @Html.LabelFor(model => model.Description) 
</div> 
<div class="editor-field"> 
    @Html.EditorFor(model => model.Description) 
    @Html.ValidationMessageFor(model => model.Description) 
</div> 

NB:GenderStudentクラスの両方がまったく同じデータ型のIsDeleted性を有するので(すなわちbool)、IsDeletedは、Genderの代わりにStudentクラスを参照しています。