我有一個應用程序顯示地圖上的位置。我創建了一個路線,以便我可以擁有漂亮的可破解URL,例如http://www.mydomain.com/paris。這隻需輸入URL即可正常工作,但在發送GET請求的主頁上有一個搜索表單。提交表單時,地址欄中顯示的URL格式爲http://www.mydomain.com/Dashboard?location=paris。通常這不會有太大的問題,因爲它正在執行正確的操作,但是我有一個運行該節目的backbone.js應用程序,它特別針對URL結構。在MVC3中,如何創建像mydomain.com/chigago這樣的路線並從GET表單中創建路線?
如果沒有javascript或重定向,我可能無法做到我需要的東西,因爲當表單ACTION屬性被填充時,位置是未知的 - 但任何人都可以確認嗎?
這是我的路線。
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,從而匹配的路由,而不是在頁面上與網址http://www.mydomain.com/Dashboard
謝謝。我打算採用這種方法而不是重定向,因爲它應該總體上更快(就http請求數而言)。我腦海中的聲音總是在講「如果JavaScript被禁用,怎麼辦」,但我可能會在那裏展示我的年齡。無論如何,因爲我已經在使用骨幹,所以我承諾! – centralscru
我知道關於JS的感覺......但是當JS被禁用時,嘗試訪問任何主要公司的頁面。它通常看起來像廢話,並不會運作良好。禁用JS並希望獲得良好的瀏覽器體驗,今天不會浮動。 –