当前位置: 首页 > 编程语言 > C#

ASP.NETMVCNonAction含义分享

时间:2023-04-10 22:44:19 C#

ASP.NETMVCNonAction含义谁能告诉我为什么要用NonAction?我的意思是说我有一个包含多个提交值的表单:更新、删除或插入。由于所有提交按钮都具有相同的通用形式,因此我在控制器内切换提交值并采取相应行动。像这样:publicActionResultasd(stringsubmitButton){switch(submitButton){case"Insert":returnInsert();//blablabla}}[NonAction]publicActionResultInsert(){//这里有一些代码returnView();}同样,为什么我要使用NonAction而不是像这样:publicvoidInsert(){//somecodeinsidehere}您可以省略NonAction属性,该方法仍然可以作为操作方法调用。来自MSDN站点(参考):默认情况下,MVC框架将控制器类的所有公共方法视为操作方法。如果您的控制器类包含公共方法并且您不希望它成为操作方法,则必须使用NonActionAttribute属性标记该方法。值得注意的是,使用[NonAction]的需要仅适用于公共方法。受保护和私有方法不被视为操作。由于Update/Delete/Insert方法是asd()助手,因此私有方法更适合您的场景:publicActionResultasd(stringsubmitButton){switch(submitButton){//blablabla}}ActionResultInsert(){//这里有一些代码}如果你不使用[NonAction]属性,别人可以直接调用你的动作,而无需通过'asd'函数阅读Huck的文章在控制器类中任何公共方法都可以通过URL调用。有时您可能需要避免这种情况。例如,如果您实现了一个接口,并且您可能不想调用该公共方法,则可以将其标记为NonActionpublicinterfaceIEmployee{voidSave(Employeee);布尔验证(员工e);}publicclassEmployeeController:Controller,IEmployee{publicvoidSave(Employeee){}[NonAction]publicvoidValidate(Employeee){}}我只是在我们的webapi中使用[NonAction]来装饰一堆控制器方法(端点))因为我们有作为最后一刻的决定,我们将推迟特定端点的交付。因此,如果您想避免暴露API端点,但仍想保留实现以供日后使用,这将非常有用。所以我使用了这个属性,它为我节省了很多时间。我会在下一个版本中删除它,它会在那里!NonAction属性使操作无法从导航栏访问。例如,如果您有一个删除数据库中项目的操作,则必须添加NonAction属性,以便用户无法访问它。首先,将ActionResult简单地视为MVC返回的特定类型的构造提供了特殊的便利,这恰恰与MVC框架内处理ActionResult的方式相同。因此,作为ActionResult的事物并不一定意味着“这应该是公开的”。事实上,MVC控制器中的任何公共方法都将被视为操作方法,无论它是否返回ActionResult。因此,仅使用不是ActionResult的返回类型不一定能阻止该方法作为可通过URL调用的公开可用操作公开。您不想将方法公开为可以通过url调用的操作的原因可能有很多,并且在您想要“保护”此操作的情况下,即使用[NonAction']属性时。这表明控制器方法不是操作方法。例如:[NonAction]publicvoidIndexTest(){//dosomething}当控制器方法的可见性不能更改为私有时,这是一个非常有用的属性。它是用在由公共访问修饰符定义的方法上的属性。事实上,MVC框架将所有公共方法都视为URL,但如果您不想这样做,则必须使用non-action属性来修饰方法。同样可以通过将方法设为私有来实现。下面给出了NonAction属性的示例。http://yogeshdotnet.com/non-action-attribute-in-mvc/如果你不想调用一些动作方法,你必须用属性标记它[NonAction]或使它成为[NonAction]privatepublicActionResultIndex(){返回视图();}[NonAction]publicActionResultCountries(Listcountries){returnView(countries);您可以复制代码并粘贴以查看结果。谢谢。以上就是C#学习教程:ASP.NETMVCNonAction意义分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: