使用“ActionName”属性为操作方法设置别名有什么好处?在为用户提供调用具有其他名称的操作方法的选项时,我真的没有看到它的好处。指定别名后,用户只能使用别名调用操作方法。但是,如果需要,那么为什么用户不更改操作方法的名称而不是为其指定别名?
我真的很感激,如果有人能够提供一个使用“ActionName”的例子,它可以提供很大的好处,或者最好使用它。
答案 0 :(得分:122)
它允许您使用数字开始操作或包含.net在标识符中不允许的任何字符。 - 最常见的原因是它允许您有两个具有相同签名的操作(参见任何脚手架控制器的GET / POST删除操作)
例如:您可以在网址操作名称http://example.com/products/create-product
与http://example.com/products/createproduct
或http://example.com/products/create_product
中添加短划线。
public class ProductsController {
[ActionName("create-product")]
public ActionResult CreateProduct() {
return View();
}
}
答案 1 :(得分:57)
如果您有两个具有相同签名且具有相同网址的操作,这也很有用。
一个简单的例子:
public ActionResult SomeAction()
{
...
}
[ActionName("SomeAction")]
[HttpPost]
public ActionResult SomeActionPost()
{
...
}
答案 2 :(得分:35)
我在用户下载报告时使用它,以便他们可以轻松地将他们的csv文件直接打开到Excel中。
[ActionName("GetCSV.csv")]
public ActionResult GetCSV(){
string csv = CreateCSV();
return new ContentResult() { Content = csv, ContentEncoding = System.Text.Encoding.UTF8, ContentType = "text/csv" };
}
答案 3 :(得分:6)
ActionName属性用于向外部世界公开具有不同名称的.NET操作方法。在下面的情况中,您可以使用ActionName属性:
对于SEO(搜索引擎优化),您希望在URL中公开比.NET操作方法名称更有意义的操作名称。
防止功能重载相关问题。假设您有一个DELETE操作方法名称,其GET和POST操作方法接受相同的参数。在这种情况下,您将收到编译时错误。要解决此问题,您可以重命名.NET方法,并使用ActionName属性,仍然可以保持暴露的相同名称。
有关详细说明,请访问ActionName attribute in ASP.NET MVC
答案 4 :(得分:2)
试试这段代码:
public class ProductsController
{
[ActionName("create-product")]
public ActionResult CreateProduct()
{
return View("CreateProduct");
}
}
答案 5 :(得分:1)
此类表示用于操作名称的属性。它还允许开发人员使用与方法名称不同的操作名称。
答案 6 :(得分:0)
当您需要实现方法重载时,它也很有用。
public ActionResult ActorView()
{
return View(actorsList);
}
[ActionName("ActorViewOverload")]
public ActionResult ActorView(int id)
{
return RedirectToAction("ActorView","Home");
}
`
这里一个ActorView不接受任何参数,另一个接受int。 第一种用于查看actor列表的方法和另一种用于在删除ID为“id”的项目后显示相同的actor列表。 无论何时需要方法重载,都可以将操作名称用作“ActorViewOverload”。