Rus*_*ova 2 c# asp.net-mvc refactoring asp.net-mvc-3
我正在为不同的代码编写这个Action代码(在同一个控制器中)10次以上Models
.有什么方法可以减少这个代码或如何创建一个通用的操作.
[HttpPost]
public ActionResult SavePerson(Person p)
{
if (ModelState.IsValid)
{
//do something
return Redirect("/Main");
}
else
{
return View();
}
}
[HttpPost]
public ActionResult SaveCategory(Category c)
{
if (ModelState.IsValid)
{
//do something
return Redirect("/Main");
}
else
{
return View();
}
}
Run Code Online (Sandbox Code Playgroud)
重点是//do something
部分始终不同于行动.因此,让我们尝试减少除此之外的所有代码.您可以使用基本控制器
public class BaseController : Controller
{
[NonAction]
protected virtual ActionResult HandlePost<T>(T model, Action<T> processValidModel)
{
if (ModelState.IsValid)
{
processValidModel(model);
return RedirectToAction("Main");
}
else
{
return View(model);
}
}
}
Run Code Online (Sandbox Code Playgroud)
并在派生控制器
public class DerivedController : BaseController
{
[HttpPost]
public ActionResult Create(Person person)
{
return HandlePost(person, p => _repository.Save(p));
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
211 次 |
最近记录: |