我是MVC模式的新手,我想做一个这样的实现:
public ActionResult Create(PersonModel p)
{
if (ModelState.IsValid)
{
switch (p.PersonType)
{
case PersonType.Client:
return RedirectToAction("Index");
case PersonType.Employee:
return RedirectToAction("Index");
case PersonType.Lawyer:
return RedirectToAction("Index");
//return RedirectToAction("Create", "Lawyer",p);
}
return RedirectToAction("Index");
}
else
{
ViewBag.CourtBranches = new SelectList(courtBranch.GetAllCourtBranches(), "ID", "Name");
return View(person);
}
}
但是当我想在我的PersonsController中使用从“PersonModel”(一个抽象类)继承的类时问题就开始了,因为VisualStudio知道有一个PersonModel而不是其他类。我怎么能“骗”VS?在我的数据库中,我在人员与其每一个遗产之间建立了一对一的关系。
重要的是要知道我有一个方法通过从POST接收“PersonType”来实现View中所选Person的实例,并且它有效。因此,当我运行项目时,我会找到律师,员工或客户。
有可能使用像return RedirectToAction("Create", "Lawyer",p);
这样的东西吗?但是,如果我能让我的想法明白,那就不要在视图中显示任何内容,“直接访问POST”。
好的,感谢读过这篇文章的所有人。要欣赏每一个答案:)
答案 0 :(得分:0)
为什么不使用以下几项操作:
public ActionResult CreateEmployee(EmployeeModel model)
{
// ...
}
public ActionResult CreateLawyer(LawyerModel model)
{
// ...
}
在任何视图中,当您想要显示人物时:
@Html.DisplayFor(m => m)
在Views \ Shared \ DisplayTemplates \ EmployeeModel.cshtml
中@model EmployeeModel
@* specific layout for Employee *@
视图\共享\ DisplayTemplates \ LawyerModel.cshtml
@model LawyerModel
@* specific layout for Lawyer *@