【问题标题】:ASP.Net MVC 4 layout changingASP.Net MVC 4 布局改变
【发布时间】:2013-01-06 21:00:47
【问题描述】:

我正在尝试将 html 模板转换为 ASP.Net MVC 4 项目。但是我遇到了问题。然后打开localHost:11062/ 站点,一切看起来都很完美。但是,如果我尝试使用相同的地址直接调用控制器和操作localHost:11062/StartMenu/Index,这应该是相同的,但不是。对我来说,看起来 css 文件加载正确。但如果没有,起始站点看起来应该不会有所不同?

【问题讨论】:

    标签: html css asp.net-mvc-4


    【解决方案1】:

    我怀疑你已经硬编码了一些 CSS 文件的 url,就像这样:

    <link href="Content/Site.css" rel="stylesheet" type="text/css" />
    

    而不是使用 url 助手:

    <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
    

    当然,对于所有静态资源,例如 javascript、图像、...

    您不应该在 ASP.NET MVC 应用程序中硬编码 url。处理 url 时始终使用 url 助手。

    此外,如果您在 CSS 文件中引用一些静态资源(例如图像),请不要忘记它们应该与 CSS 文件的位置相关。

    您可能很容易在 javascript 调试工具(如 FireBug)的 Net 选项卡中看到这一点,在该选项卡中您会收到相应资源的 404 错误。

    【讨论】:

    • 也许是javascript。我可以看到有 javascript 文件。在该文件中它调用其余 javascript 文件的位置。像这样 (function() { document.writeln(''); }).call(this);跨度>
    • 是的,这显然是错误的。您已经硬编码了 javascript 文件的路径,而不是使用 url 帮助程序。也应该避免document.write
    • 但是用什么来改变它,在 javascript 文件或 CSS 文件中??
    • 在您的布局中,您可以有一个动态的全局 javascript 变量指向您网站的根目录:&lt;script type="text/javascript"&gt;var siteRoot = '@Url.Content("~/")';&lt;/script&gt;。现在在你的 javascript 文件中,你可以使用这个变量来生成 url。或者更好的是,直接生成相关 javascript 文件的路径:&lt;script type="text/javascript"&gt;var siteRoot = '@Url.Content("~/scripts/jquery.maskedinput.js")';&lt;/script&gt;。但我再重复一遍:不要在 javascript 中使用 document.write。这是一种非常过时的方法。我看到你正在使用 jquery....
    • ...那么为什么不利用它呢?更具体地说,$.getScript() 方法正是为此目的而设计的 - 将 javascript 文件动态包含到 DOM 中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-22
    • 1970-01-01
    • 1970-01-01
    • 2014-10-14
    • 2018-07-09
    • 1970-01-01
    相关资源
    最近更新 更多