2017-03-09 73 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"); 
}