Asp.net mvc 在ASP.NET MVC中是否可以同时使用GET和DELETE谓词标记操作?
我希望执行GET/Product/1和DELETE/Product/1,而不必执行DELETE/Product/DELETE/1这样的单独操作: 例如:Asp.net mvc 在ASP.NET MVC中是否可以同时使用GET和DELETE谓词标记操作?,asp.net-mvc,rest,asp.net-mvc-3,Asp.net Mvc,Rest,Asp.net Mvc 3,我希望执行GET/Product/1和DELETE/Product/1,而不必执行DELETE/Product/DELETE/1这样的单独操作: 例如: public class ProductController : Controller { [HttpGet] [HttpDelete] public ActionResult Index(int id) { ... } } 如何区分动作体中的HTTP动词?不要这样做。您没有保存任何代码,也没有从混合使用幂等GET和潜
public class ProductController : Controller
{
[HttpGet]
[HttpDelete]
public ActionResult Index(int id) { ... }
}
如何区分动作体中的HTTP动词?不要这样做。您没有保存任何代码,也没有从混合使用幂等GET和潜在危险的DELETE中获益。如果它们有不同的缓存要求呢?还是不同的授权 不要这样做。您没有保存任何代码,也没有从混合使用幂等GET和潜在危险的DELETE中获益。如果它们有不同的缓存要求呢?还是不同的授权 我将把逻辑分为两种不同的方法 如果您需要相同的方法签名但不同的http方法,那么您应该能够执行以下操作:
[HttpGet]
public ActionResult Index(int id) { ... }
[ActionName("index")]
[HttpDelete]
public ActionResult IndexDelete(int id) { ... }
我将把逻辑分为两种不同的方法 如果您需要相同的方法签名但不同的http方法,那么您应该能够执行以下操作:
[HttpGet]
public ActionResult Index(int id) { ... }
[ActionName("index")]
[HttpDelete]
public ActionResult IndexDelete(int id) { ... }
您不希望在同一个操作上使用Get | Delete,因为这会让人困惑。没有理由用一种方法做两件事 那太糟糕了 要解决这个问题,请创建一个实际删除的ActionResult,并向其添加HttpDelete属性 这是最好的方法:
public class ProductController : Controller
{
public ActionResult Index(int id)
{
}
[HttpDelete]
public ActionResult Delete(int id)
{
}
}
请参阅此处了解更多信息。您不希望在同一操作中使用Get | Delete,因为这会让人困惑。没有理由用一种方法做两件事 那太糟糕了 要解决这个问题,请创建一个实际删除的ActionResult,并向其添加HttpDelete属性 这是最好的方法:
public class ProductController : Controller
{
public ActionResult Index(int id)
{
}
[HttpDelete]
public ActionResult Delete(int id)
{
}
}
有关详细信息,请参见此处。谢谢,但我在问题中特别提到了这一点,而不是执行DELETE/Product/DELETE/1,其中URL中的DELETE是操作。对不起,如果我不清楚的话。@johansson不清楚:你不应该做你想做的事。这不是一个好的设计。谢谢,但我在我的问题中特别提到了这一点,而不是执行DELETE/Product/DELETE/1,其中URL中的DELETE就是操作。对不起,如果我不清楚的话。@johansson不清楚:你不应该做你想做的事。这不是一个好的设计,这很有效。谢谢我忘记了ActionName装饰程序。如果您想避免使用ActionName,还可以执行[HttpDelete]公共ActionResult索引id,字符串foo{}。这很有效。谢谢我忘记了ActionName装饰程序。如果要避免使用ActionName,还可以执行[HttpDelete]公共ActionResult Indexint id,字符串foo{}。