.Net MVC 프로젝트에서 Create 양식을 개발 중입니다. 나는 실제 비즈니스 시나리오에서 가질 수있는 질문에 대한 간단한 데모를 작성하겠습니다.mvc보기에 대한 동적 모델을 가질 수 있습니다.
저는 개인 클래스와 그로부터 계승 된 몇 가지 다른 클래스가 있습니다.
public class Person
{
public int Id { get; set; }
[Required]
public string Forename { get; set; }
[Required]
public string Surname { get; set; }
[Required]
public DateTime Dob { get; set; }
}
public class Teacher: Person
{
[Required]
public string Department { get; set; }
}
public class Student: Person
{
[Required]
public string TermAddress { get; set; }
}
아래와 같은 생성 방법이있는 경우
public class PersonController : Controller
{
public ActionResult Create()
{
var personFactory = new PersonFactory();
var p = personFactory.CreatePerson("student");
return View(p);
}
}
public class PersonFactory
{
public object CreatePerson(string type)
{
switch(type)
{
case "teacher":
return new Teacher();
break;
case "student":
return new Student();
break;
default:
return null;
break;
}
}
}
두 경우를 모두 처리 할 수있는보기가 가능합니까? 내 비즈니스 사례에는 10 개 이상의 다른 유형의 유사한 클래스가 있으며 10 개 이상의 뷰를 만들지 않고도 문제를 해결할 수있는 방법이 있는지 궁금합니다. 나는 내가보기에 강하게 타자를 치는 것을 알고있다. 그러나 그것은 멋지다. 하나의 뷰를 사용할 수있는 한 10 개 이상의 뷰 모델을 가질 수 있습니다. 이런 종류의 문제를 해결할 수있는 대안이나 제안은 환영합니다. 감사.
@{
????????????? just an idea .. something like that .. ???????????
var type = "student";
if(type == "stuent")
{
@model WebApplication1.Models.Student
}
else if(type == "teacher")
{
@model WebApplication1.Models.Teacher
}
}
<h2>Create</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
@Html.EditorForModel()
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
왜 Person을 모델로 정의하지 않습니까? – Uriil
감사합니다. @ 우릴 ... 당신 말이 맞아요. 나는 그저 할 수 있다는 것을 몰랐다. – lawphotog