我有兩個途徑Asp.Net路由會被重定向URL,如果參數沒有定義
主頁routes.MapRoute(
name: "Default",
url: "{location}/{controller}/{action}/{id}",
defaults: new { controller = "Products", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Home",
url: "{controller}/{action}",
defaults: new { controller = "Home", action = "Index" }
);
當用戶進入主頁面,他已經選擇了兩個環節:
<a href="/loc1/Products/index">Location 1</a>
<a href="/loc2/Products/index">Location 2</a>
而且我有ActionFilterAttribute
,我在那裏檢查location
參數,如果url沒有,我將用戶重定向到主頁面。
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
string location = (string)filterContext.RouteData.Values["location"];
if (string.IsNullOrEmpty(location)
&& filterContext.ActionDescriptor.ControllerDescriptor.ControllerName != "Home"
&& !filterContext.IsChildAction)
{
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary
{
{ "controller", "Home" },
{ "action", "Index" }
});
}
SessionUtils.SetLocationName(location);
}
基礎上location
可變我會查詢數據庫中不同的記錄,所以當用戶沒有提供網址的任何位置,並嘗試訪問Products/index/5
我希望他們被重定向到他們的主頁選擇位置並單擊其中一個鏈接。 但是,我收到錯誤消息:
無法找到該資源。
說明:HTTP 404。您正在尋找(或它的一個依賴)的資源可能已被刪除,更名或暫時不可用。請檢查以下網址並確保它拼寫正確。
請求的URL:/產品/指數
我應該如何正確地進行路由配置,讓用戶將被重定向到主頁如果網址中沒有位置參數?
如果我不想依賴'loc1'和'loc2'會怎麼樣?實際的「位置」將從數據庫中拉出,HTML將自動渲染。 –
編輯符合您需要的答案 – manish