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")
}
2 ответа
Используйте первичный ключ и внешний ключ. Если вы хотите сохранить базу данных, вы можете сначала ввести код структуры объекта или базу данных.
Определить метод поста контроллера
Я провел эксперименты по влиянию наследования на строительные леса, чтобы создать представление из модели без аннотаций данных (первичные / внешние ключи и т. Д.), И обнаружил, что ваша проблема может быть решена с помощью наследования. 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: так как оба Gender
а также Student
класс есть IsDeleted
свойство с точно таким же типом данных (т.е. bool
), IsDeleted
используется в виду относится к Student
класс вместо Gender
,