地図上に場所を表示するアプリケーションがあります。http://www.mydomain.com/parisのような素敵なハッキング可能な URL を取得できるように、ルートを作成しました。これは URL を入力するだけで問題なく機能しますが、ホームページに GET 要求を送信する検索フォームがあります。フォームが送信されると、ロケーション バーに表示される URL はhttp://www.mydomain.com/Dashboard?location=parisの形式になります。通常、これは正しいアクションを実行しているのであまり問題になりませんが、ショーを実行している backbone.js アプリケーションがあり、URL 構造に特に注意を払っています。
フォーム ACTION 属性が入力されたときに場所がわからないため、javascript またはリダイレクトなしで必要なことを実行することは不可能かもしれませんが、誰でも確認できますか?
これが私のルートです。
public static void RegisterRoutes( RouteCollection routes )
{
routes.IgnoreRoute( "{resource}.axd/{*pathInfo}" );
routes.MapRoute(
String.Empty,
"{location}",
new {
controller = "Dashboard",
action = "Index",
id = ""
}
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new
{
controller = "Home",
action = "Index",
id = UrlParameter.Optional
} // Parameter defaults
);
}
こちらがコントローラー。
public class DashboardController : Controller
{
[HttpGet]
public ViewResult Index(string location)
{
return View(new AccItemSearch { Location = location });
}
}
これがフォームです。
@using (Html.BeginForm("Index", "Dashboard", FormMethod.Get)) {
<h2>Where are you going?</h2>
<input type="text" placeholder="Area, town or postcode" id="location" name="location"/>
<button>Search!</button>
</div>
}
明確にするために:私が助けたい問題は、ユーザーにフォームを送信させてから、次のURLのページに着陸させる方法です:http ://www.mydomain.com/searchtermしたがって、 URL http://www.mydomain.com/Dashboard