2017-03-09 27 views
-1

我遇到了一個問題,我的控制器中名爲GiftCards的操作覆蓋了實際的URL/View頁面名稱。ASP.NET Core寫入我的URL

public IActionResult SomeStupidName() 
{ 
     return ("Checkout"); 
} 

我的網址變成

www.mywebsite.com/GiftCards/SomeStupidName 

,而我希望它是

www.mywebsite.com/GiftCards/Checkout 

一些進一步的細節是,這是執行形式提交,其中形式有

asp-action="SomeStupidName" 
+1

沒有什麼_over寫你URL_!該方法被命名爲'SomeStupidName',所以它默認創建'../ GiftCards/SomeStupdName'。如果要更改它,請創建特定的路由定義或使用屬性路由 - [在ASP.NET Core中構建路由的5種方法](https://stormpath.com/blog/routing-in-asp-net-core) –

回答

1

Yo你可以在Asp.Net Core中使用「Attribute Routing」。在你的控制器中返回正確的視圖。試試這個代碼!

[Route("GiftCards/Checkout")] 
public IActionResult SomeStupidName() 
{ 
    return View("Checkout"); 
} 

屬性路由是屬性集,用於將動作直接映射到路由模板。 「()」 in 「[Route(」「)]」「屬性中可以提及重寫url。

更多屬性在Asp.net核心路由細節:​​

+0

您應該添加這些路由屬性的示例。 – juunas

+0

更新@RajneeshMenoth答案,因爲編輯答案時顯示「編輯隊列已滿」消息。添加上面的行動方法「[路線(」GiftCards/Checkout「)]」 – Sumit

+0

@Sumit感謝您的信息。 – RajeeshMenoth

2

你必須明白,www.mywebsite.com/GiftCards/SomeStupidName意味着SomeStupidName是控制器的動作GiftCards所以www.mywebsite.com/GiftCards/Checkout意味着Checkout是控制器GiftCards的,但在你的代碼的動作您從GiftCardsaction返回View不會重定向到其他action。假設我有行動名稱Checkout

public IActionResult Checkout() 
{ 
    return View("Checkout"); 
} 

當我進入www.mywebsite.com/GiftCards/Checkout所以現在我可以從任何其他行動對行動重定向像它將返回視圖Checkout

public IActionResult SomeStupidName() 
{ 
    return RedirectToAction("Checkout"); 
}