ActionName的用途
使用“ActionName”属性为操作方法设置别名有什么好处? 我真的没有看到它的好处,在提供用户select调用一个其他名称的行动方法。 指定别名后,用户只能使用别名调用操作方法。 但是,如果这是必需的,为什么用户不更改操作方法的名称,而不是指定一个别名?
我真的很感激,如果任何人都可以提供一个例子,使用“ActionName”的场景,它可以提供很大的好处或最好使用。
它允许你用一个数字开始你的动作,或者包含任何.net在标识符中不允许的字符。 – 最常见的原因是它允许您有两个具有相同签名的动作(请参阅任何脚手架控制器的GET / POST删除动作)
例如:您可以在您的url动作名称http://example.com/products/create-product
vs http://example.com/products/createproduct
或http://example.com/products/create_product
input破折号。
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属性:
-
对于SEO(search引擎优化),您希望在url中公开比.NET操作方法名称更有意义的操作名称。
-
防止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”。
- 如何调用另一个控制器操作从Mvc中的控制器
- 从app_data中删除.mdf文件导致exception无法将文件附加为数据库
- 基于angular色的访问控制(RBAC)与ASP.NET MVC中的基于声明的访问控制(CBAC)
- 是否有可能使一个基于子域的ASP.NET MVC路线?
- 如何redirect到ASP.NET MVC中的上一个操作?
- ASP.NET MVC – 业务逻辑是否应该存在于控制器中?
- “System.Net.Http.HttpContent”不包含“ReadAsAsync”的定义,也没有扩展方法
- 从数据注释的Asp.Net Mvc隐藏字段
- 基于外部因素validation对象(即数据存储唯一性)