2017-01-11 5 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. Пожалуйста помоги.

вид выглядит

@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 u, говорящий о частных свойствах, вызывающих проблемы с лесами ??? –

+0

Нет, частные поля полностью не связаны с этой проблемой. С моей точки зрения ваша проблема с лесами возникает из-за отношений между классами моделей (включая некоторый класс, который расширяет базовый класс, замечает, какие имена свойств отсутствуют в представлении). –

ответ

0

Используйте первичный ключ и внешнего ключа .Если вы хотите сохранить базу данных вы можете рамочная объект код первого или базы данных первой.

Определение контроллера пост метода

0

я взял опыты о наследовании эффекта на строительном лес, чтобы создать вид из модели без аннотации данных (первичных/внешних ключей и т.д.), и обнаружил, что ваша проблема может быть решена путем наследовать 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> 

Примечание: Так как Gender и Student класса имеет свойство IsDeleted с точно таким же типом данными (т.е. bool), IsDeleted используется для обозначения Student класс вместо Gender.