ActionName的用途

使用“ActionName”属性为操作方法设置别名有什么好处? 我真的没有看到它的好处,在提供用户select调用一个其他名称的行动方法。 指定别名后,用户只能使用别名调用操作方法。 但是,如果这是必需的,为什么用户不更改操作方法的名称,而不是指定一个别名?

我真的很感激,如果任何人都可以提供一个例子,使用“ActionName”的场景,它可以提供很大的好处或最好使用。

它允许你用一个数字开始你的动作,或者包含任何.net在标识符中不允许的字符。 – 最常见的原因是它允许您有两个具有相同签名的动作(请参阅任何脚手架控制器的GET / POST删除动作)

例如:您可以在您的url动作名称http://example.com/products/create-product vs http://example.com/products/createproducthttp://example.com/products/create_productinput破折号。

 public class ProductsController { [ActionName("create-product")] public ActionResult CreateProduct() { return View(); } } 

如果您有两个具有相同url的相同签名的动作也很有用。

一个简单的例子:

 public ActionResult SomeAction() { ... } [ActionName("SomeAction")] [HttpPost] public ActionResult SomeActionPost() { ... } 

我在用户下载报告时使用它,以便他们可以将csv文件直接打开到Excel中。

 [ActionName("GetCSV.csv")] public ActionResult GetCSV(){ string csv = CreateCSV(); return new ContentResult() { Content = csv, ContentEncoding = System.Text.Encoding.UTF8, ContentType = "text/csv" }; } 

ActionName属性用于向外部世界公开具有不同名称的.NET操作方法。 在以下情况下,您可以使用ActionName属性:

  1. 对于SEO(search引擎优化),您希望在url中公开比.NET操作方法名称更有意义的操作名称。

  2. 防止function重载相关问题。 假设你有一个DELETE操作方法名,其GET和POST操作方法接受相同的参数。 在这种情况下,你会得到编译时错误。 为了解决这个问题,你可以重命名你的.NET方法和ActionName属性,你仍然可以保持同名。

有关更详细的解释,请访问ASP.NET MVC中的ActionName属性

试试这个代码:

 public class ProductsController { [ActionName("create-product")] public ActionResult CreateProduct() { return View("CreateProduct"); } } 

这个类表示一个用于动作名称的属性。 它还允许开发人员使用与方法名称不同的操作名称。

当你需要实现方法重载时也是有帮助的。

  public ActionResult ActorView() { return View(actorsList); } [ActionName("ActorViewOverload")] public ActionResult ActorView(int id) { return RedirectToAction("ActorView","Home"); } ` 

这里一个ActorView不接受参数,另一个接受int。 第一种用于查看演员列表的方法,另一种用于在删除ID为“id”的项目之后显示相同的演员列表。 无论您需要方法重载,您都可以将操作名称用作“ActorViewOverload”。