【问题标题】:Unable to change nopCommerce default start page无法更改 nopCommerce 默认起始页
【发布时间】:2015-10-21 16:53:41
【问题描述】:

我正在尝试让我的 nopCommerce 3.50 网站在访问该网站时打开特定页面。

当我在本地调试项目时,它可以正常工作,因为我将特定页面“welcome.html”设置为项目属性中的启动操作(在 Visual Studio 2012 中)。但是,一旦站点在服务器上发布,它就会忽略此请求。

在 IIS 中,我检查了“welcome.html”是否位于默认页面列表的顶部,但是 nopCommerce 会忽略这些设置(如在各种论坛上找到的那样),即使您删除了其他所有内容,它也总是默认设置。 aspx.

我已尝试将其添加到 system.webserver 中的 web.config 中,但没有任何区别:

<defaultDocument>
                <files>
                      <add value="Welcome.html"/>
                  </files>        
  </defaultDocument>

配置中没有其他对默认起始页的引用。

我对 nopCommerce 或路由不太熟悉,有人知道如何/在哪里可以更改默认页面吗?到目前为止,我在论坛上找到的所有内容都没有奏效。是的,每次更改后我都重新构建了项目,通常会完全替换服务器上的 bin 文件夹以确保。

我不希望网站重定向到特定的操作或视图,而是重定向到项目根文件夹中的静态 HTML 文档(当然我也不想这样,但客户对他们想要什么)。静态页面有两个按钮,一个将转到 nopCommerce default.aspx,另一个将转到另一个站点。

谢谢

【问题讨论】:

  • 您是否尝试过更改 Global.asax.cs 文件中的路由 - “HomeController”、“Index”页面?
  • 我不确定如何重定向到单独的 HTML 页面而不是视图?
  • 请看答案。

标签: nopcommerce


【解决方案1】:

您可以在 global.asax.cs 中更改路线

默认路线是

  routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}/{id}", // URL with parameters
                new { controller = "Home", action = "Index", id = UrlParameter.Optional },
                new[] { "Nop.Web.Controllers" }
            );

这条路由会告诉你在 HomeController 中执行,有 Index 动作(函数),并返回 Views 下定义的同名视图。视图路径将是 Views/Home/Index

为了改变这一点,你应该添加一个欢迎函数(只需复制索引函数并用欢迎重命名并将其粘贴到 HomeController 中)。

然后你可以改变你的路由如下。

 routes.MapRoute(
                    "Default", // Route name
                    "{controller}/{action}/{id}", // URL with parameters
                    new { controller = "Home", action = "Welcome", id = UrlParameter.Optional },
                    new[] { "Nop.Web.Controllers" }
                );

不要忘记在 Views/Home 下创建 Welcome 视图作为 Welcome.cshtml

【讨论】:

  • 感谢您的回答,但它没有解决“我不希望网站重定向到特定操作或视图,而是重定向到根文件夹中的静态 HTML 文档”问题中的部分的项目”。但是,如果不是出于这个特定(愚蠢)的要求,您的回答将非常有帮助,我相信在正常情况下对我很有用,所以谢谢:)
  • @Lyall 这可能是一般的 MVC 问题。最终cshtml文件在客户端生成html,它只是在服务器端调用cshtml。你可以检查这个网址。 stackoverflow.com/questions/22656945/…
  • 好点,我也意识到我打算做的事情是不可能的。我找到的解决方法(我发布的答案)适用于这个特定的示例,但任何其他想要更改默认页面(即查看这个问题的主题)的人都可以按照你的答案来实现他们想要的。跨度>
【解决方案2】:

找到一种方法来满足要求:

  1. 在目录中添加一个新文件夹(例如“NOP”),并将除了welcome.html 页面之外的所有内容都放在新文件夹中。
  2. 将欢迎页面中的链接更改为指向新文件夹结构(图像、链接等)内部。
  3. 在 IIS 中确保将 welcome.html 设置为默认文档,因为它现在是文件夹中唯一正确加载的文档。
  4. 在 IIS 中将新文件夹转换为应用程序(在 Windows Server 2012 R2 上右键单击 > '转换为应用程序')

这样就不需要对nopCommerce中的代码做任何改动,就能达到预期的效果。

【讨论】:

    猜你喜欢
    • 2015-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-13
    • 2020-08-02
    • 2012-05-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多