私はASP.NET MVCとRouteを試しています。すべてのビューのパブリックメソッド?デフォルトのActionResultとRoutes in ASP.MVC
MVCでは、ビューを作成するときはいつでも、コントローラにパブリックメソッドを追加するように見えます。例:
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult About()
{
return View();
}
//... a public method for every view.. :(
}
すべてのビューに対してパブリックメソッドを作成したくありません。デフォルトでは、特に指定がない限り、システム内のすべてのビューに対して「return View()」の動作が必要です。例えば
、HTTP GET:それが今立っている
site.com/about site.com/features site.com/ site.com/testimonials site.com/contact-us
として、私は追加する必要があります:
HomeController.About()
HomeController.Features()
HomeController.Index()
HomeController.Testimonials()
HomeController.ContactUs()
すべての結果を "ビュー()を返す" で。これは私の問題です。私は簡単なビューのパブリックアクションメソッドの作成を排除しようとしています。 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()
}
}
おかげで、 ブライアン
私はこれを試しましたが、すべてのリクエストでpageNameがnullです。 site.com/とsite.com/aboutをrootにする。 –
それを得ました!ありがとう!美しく動作します。 –
{id}を{pageName}に変更するだけでroute.MapRoute()で動作します –