私はここで何かについて少し混乱しています。フォームがあり、そのフォームの URL は次のとおりです。
http://domain.com/Home/requestquote
フォームで [送信] をクリックし、フォーム コントローラーにあるこのフォームを処理するメソッドがビューを返すと、URI は次のようになります。
http://domain.com/form/requestQuoteSubmit
requestQuoteSubmit
メソッドはどこにありますか。
これは、検証によってエラーのためにページが返された場合と、フォームの送信が成功した場合の両方で発生します。
成功した場合、ビューは返さHome/thanks
れ、エラーの場合は単に返されHome/requestquote
ます。URI が本来あるべきものではないという事実を除いて、すべてが正常に機能しているように見えます。私のリンクは次のようになっているため、これによりページ上の他のすべてが壊れます。
@Url.RouteUrl(Model.CompanyPageDatabaseModel.companyCode, new { Controller = MVC.services.Name, Action = MVC.services.ActionNames.page })
そのため、companyCode 値が適切に渡されず、リンクが正しく形成されません。フォームメソッドが正しいページを送り返す方法や理由がわかりませんが、URI をそれ自体に設定していますか?
これが私のルートです。
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
null,
"{action}",
new { controller = MVC.Home.Name, action = MVC.Home.ActionNames.Index },
new { RootAction = new RootActionConstraint() } // Route Constraint
);
routes.MapRoute(
null, // Route name
"{controller}/{action}", // URL with parameters
new { controller = MVC.Home.Name, action = MVC.Home.ActionNames.Index }, // Parameter defaults
new { controller = "Home|contact|franchise|form|resources|services|technology|community|careers|carriers|about" }
);
routes.MapRoute(
null,
"{companyCode}/{action}",
new { controller = MVC.Home.Name, action = MVC.Home.ActionNames.Index },
new { RootAction = new RootActionConstraint() } // Route Constraint
);
routes.MapRoute(
"jax",
"{companyCode}/{controller}/{action}",
new { controller = MVC.Home.Name, action = MVC.Home.ActionNames.Index }
);
最後のルート値は、フランチャイズ ルートの例です。
また、ビュー内のフォーム コードは次のとおりです。
@using (Html.BeginForm("requestquote", "form", FormMethod.Post))
{ }
何か案は?
ありがとう。
編集:私のルートに追加されました。