【问题标题】:Configure access to View's SubFolders in ASP.NET MVC在 ASP.NET MVC 中配置对 View 的子文件夹的访问
【发布时间】:2014-12-09 05:31:15
【问题描述】:

我想知道是否可以使用 ASP.NET MVC 5 进行以下操作。

我想要一个 OrderController 和以下文件夹的结构

查看/订单/详情/

我想知道如何为Details 文件夹配置方法?

我的意思是创建/编辑/列出

我们是否为它或路由使用了一些方法属性以及应该如何完成?

谢谢!

附言

我发现这个链接非常有用http://blogs.msdn.com/b/webdev/archive/2013/10/17/attribute-routing-in-asp-net-mvc-5.aspx

【问题讨论】:

  • 你的意思是你想在你的行动方法中这样做return View("~/Views/Orders/Details/Create.cshtml");?
  • 那我有没有用那条评论回答你的问题?
  • “配置访问”是什么意思?还是“配置方法”?你想达到什么目的?您是在询问操​​作方法的授权吗?
  • @ClarkKent:您可以拥有两个同名的方法,因为它们是彼此不同的重载。如果它们接受不同的参数,它们可以在同一个控制器上。虽然语义上这可能不是一个好主意,因为控制器通常等同于一些语义概念,并且在同一个控制器中有两个可能会让人感到困惑。
  • @ClarkKent:解决什么?如何在同一个类中有两个同名的方法?下面的答案已经说明,方法参数只需要彼此不同。还是您的意思是如何将语义概念放入自己的控制器中?只需创建两个单独的控制器。在这种情况下,如果这两个概念确实彼此不同,您可能会有一个 OrdersController 和一个 OrderDetailsController。如果不了解您的建模和用例,就很难更具体。

标签: asp.net-mvc attributes asp.net-mvc-5 asp.net-mvc-routing project-structure


【解决方案1】:

你有两个选择。您可以编写自己的代码来确定要返回的正确视图,这相当复杂,也可以使用完整路径指定所需的视图。此外,如果您必须使用相同的方法(不知道为什么要这样做),那么您需要更改路由。一种选择是使用属性路由。

public class OrdersController : Controller
{
    [Route("CreateOrder")]
    public ActionResult Create(Order order)
    {
        //Snip
        return View("~/Views/Orders/Details/Create.cshtml");
    }

    [Route("CreateOrderDetails")]
    public ActionResult Create(OrderDetails orderDetails)
    {
        //Snip
        return View("~/Views/Orders/Details/Create.cshtml");
    }


}

【讨论】:

  • 大卫,我需要知道我与CreateOrderController 方法有什么关系。它会对这条路径做出反应吗?我的意思是我是否使用路由或其他方法来实现该方法?以及应该如何做。
  • 我明白了。但是,大卫我有 Order 的同名方法。如何解决?我的意思是我将保持相同的控制器方法具有相同的名称,但文件夹链中的不同视图。
  • 你要么重命名一个(可能是OrderDetails),要么使用路由来有效地为 URL 做同样的事情
猜你喜欢
  • 2018-08-02
  • 2019-12-07
  • 2012-05-14
  • 1970-01-01
  • 2021-11-08
  • 1970-01-01
  • 1970-01-01
  • 2016-05-05
  • 2019-08-09
相关资源
最近更新 更多