【问题标题】:Trouble using areas, not sure if something wrong with routing or web.config settings使用区域时遇到问题,不确定路由或 web.config 设置是否有问题
【发布时间】:2011-10-04 21:06:35
【问题描述】:

问题由以下步骤描述。

  1. 使用 Internet 应用程序模板创建一个新的 ASP.NET MVC3 Web 应用程序。
  2. 使用 Authorize 装饰 HomeController 类。
  3. 运行应用程序,它基本上会带你http://localhost: 51578/Account/LogOn?ReturnUrl=%2F 到目前为止一切顺利。

让我们在这个项目中自定义一些东西。

  1. 在此解决方案中添加一个名为“Login”的区域,并将 Viewer 下的 AccountController.cs、AccountModel.cs 和整个 Account 文件夹移动到该名为 Login 的区域下的适当文件夹中。
  2. 现在运行应用程序,你会得到以下错误

说明:在执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.InvalidOperationException:未找到视图“LogOn”或其主视图,或者没有视图引擎支持搜索的位置。搜索了以下位置: ~/Views/Account/LogOn.aspx
~/Views/Account/LogOn.ascx
~/Views/Shared/LogOn.aspx
~/Views/Shared/LogOn.ascx
~/Views/Account/LogOn.cshtml
~/Views/Account/LogOn.vbhtml
~/Views/Shared/LogOn.cshtml
~/Views/Shared/LogOn.vbhtml

我是否需要修改 web.config 或路由中的任何内容才能使其正常工作?

【问题讨论】:

    标签: asp.net-mvc-3


    【解决方案1】:

    authorize 属性将您重定向到 LogOn 页面,该页面在 Login 区域之外的 View 文件夹中找不到。如果您在登录区域和 LoginRegisterArea 中移动 HomeController,您将添加一条有效路由到主控制器,它将起作用。

    我试图做你想做的事,但我发现的唯一解决方案是将你想要授权的控制器和 LogOn 视图放在同一个地方。我之前提到的将控制器和 LogOn 视图分开的解决方案不起作用。

    也许有人可以找到一个解决方案来实现你真正想要的。

    【讨论】:

    • 这就是重点,我想将与 LogOn 相关的代码移到一个单独的区域中,以便更好地组织代码,同时将其他内容分开(并且将来可能会添加到另一个区域或其他内容中)。跨度>
    • 感谢 Bogdan 的建议,但是当我修改 LoginAreaRegistration 时,我在“/”应用程序中收到以下错误服务器错误。不确定我需要在 AccountController 中修改什么。有任何想法吗?无法找到该资源。说明:HTTP 404。您要查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请检查以下 URL 并确保其拼写正确。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-30
    • 2018-06-08
    • 1970-01-01
    • 2017-11-12
    • 2012-08-03
    • 1970-01-01
    • 2017-12-27
    相关资源
    最近更新 更多