我正在试验 ASP.NET MVC 和路由。
似乎 MVC 在我想创建视图的任何时候都强制我向控制器添加一个公共方法。例如:
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult About()
{
return View();
}
//... a public method for every view.. :(
}
我不想为每个视图创建一个公共方法。默认情况下,除非另有说明,否则我希望系统中所有视图的“返回 View()”行为。
例如,HTTP GET:
site.com/about site.com/features 网站.com/ site.com/testimonials site.com/contact-us
就目前而言,我必须补充:
HomeController.About()
HomeController.Features()
HomeController.Index()
HomeController.Testimonials()
HomeController.ContactUs()
所有结果都是“返回 View()”。这是我的问题,我试图消除为简单视图创建公共操作方法。
对于需要额外处理的视图,例如 HTTP POST 上的“联系我们”页面,用于:
site.com/contact-us
我想专门在控制器中添加一个方法来发送 SMTP 消息。
以下是我正在尝试做的更简洁的示例:
public class HomeController{
public ActionResult ShowBasicView(){
//HTTP GET:
//site.com/about
//site.com/features
//site.com/
//site.com/testimonials
//All URLs above map to this action
return View();
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult ContactUs(FormCollection data){
//HTTP POST:
//site.com/contact-us
//POST URL maps here.
SmtpClient.Send(new MailMessage()) //etc...
return View()
}
}
谢谢,布赖恩