ASP.NETMVCとルートを試しています。
ビューを作成するときはいつでも、MVCによってコントローラーにパブリックメソッドを追加するように強制されているようです。例えば:
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult About()
{
return View();
}
//... a public method for every view.. :(
}
すべてのビューに対してパブリックメソッドを作成したくありません。デフォルトでは、特に指定がない限り、システム内のすべてのビューに対して「returnView()」の動作が必要です。
たとえば、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()
すべて「returnView()」になります。これが私の問題です。単純なビューのパブリックアクションメソッドの作成を排除しようとしています。
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()
}
}
ありがとう、ブライアン