Sha*_*kan 36 c# asp.net-mvc actionmethod
谁能告诉我为什么要使用NonAction?我的意思是说我有一个包含多个提交值的表单:Update,Delete或Insert.由于所有提交按钮具有相同的共同形式,因此我在控制器内切换提交值并采取相应措施.
像这样:
public ActionResult asd(string submitButton){
switch(submitButton){
case "Insert":
return Insert();
// bla bla bla
}
}
[NonAction]
public ActionResult Insert(){
// some code inside here
return View();
}
Run Code Online (Sandbox Code Playgroud)
再一次,为什么我应该使用NonAction而不是这样的东西:
public void Insert(){
// some code inside here
}
Run Code Online (Sandbox Code Playgroud)
Tau*_*ris 13
值得注意的是,使用的需要[NonAction]仅适用于公共方法.受保护的和私有的方法不被视为操作.由于您的Update/ Delete/ Insert方法是帮助器asd(),因此私有方法更适合您的方案:
public ActionResult asd(string submitButton){
switch(submitButton){
case "Insert":
return Insert();
// bla bla bla
}
}
ActionResult Insert(){
// some code inside here
}
Run Code Online (Sandbox Code Playgroud)
我只是在我们的 Web api 中使用了 [NonAction] 来装饰一堆控制器方法(端点),因为我们在最后一刻决定推迟特定端点的交付。
因此,如果您想避免暴露 API 端点,但仍想保留实现以供以后使用,那么它很有用。
所以我使用了这个属性,它节省了我很多时间。
我将在下一个版本中将其删除,并且它就在那里!
控制器类中的任何公共方法都可以通过URL调用.
有时您可能需要避免这种情况.例如,如果您实现某个接口,并且您可能不想调用该公共方法,则可以标记为NonAction
public interface IEmployee
{
void Save(Employee e);
bool Validate(Employee e);
}
public class EmployeeController:Controller, IEmployee
{
public void Save(Employee e){
}
[NonAction]
public void Validate(Employee e){
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
47565 次 |
| 最近记录: |