繁体   English   中英

ASP.NET MVC _layout.cshtml是否与Webforms母版页相似?

[英]Isn't ASP.NET MVC _layout.cshtml similar to Webforms Master page?

我有一个带有布局页面的MVC 4项目,该页面设置了这样的图像

 <a href="/"><img id="logoImage" src="~/Content/siteImages/myLogo.png" alt="My logo"    title="Welcome to my site" /></a>

我也尝试过这个:

<a href="/"><img id="logoImage" src="../Content/siteImages/myLogo.png" alt="My logo" title="Welcome to my site" /></a>

和这个:

<a href="/"><img id="logoImage" src="@Url.Content("~/Content/siteImages/myLogo.png")" alt="My logo" title="Welcome to my site" /></a>

只要控制器是家庭控制器,所有这些都可以正常工作。 我使用一个Actionlink @Html.ActionLink("Northwind Demo", "Northwind", "Northwind", null, new { @class="links"})来获取另一个控制器。

单击ActionLink后,我的图像就会消失。 我在浏览器中检查了呈现的链接文本,该文本与以前相同。

src="Content/siteImages/myLogo.png"

但是,在浏览器的“网络”选项卡中检查请求时,图像的URL现在为Northwind/Content/siteImages/myLogo.png

这无法解决。 出于某种原因,浏览器正在将控制器的名称添加到图像请求的开头。 我确定我确实缺少一些愚蠢的东西,但是...我该如何解决?

编辑
我想知道这是否仅在本地运行时会发生,并且在部署到服务器时可能会消失吗? 我仍然无法解决此问题。

编辑
我真的在为其他人从未遇到过这一事实而苦苦挣扎。 我的印象是_layout.cshtml就像WebFroms中的母版页。 我在这里需要一些建议。

编辑
所以我有一个成功的时刻。 我将Northwind控制器中输入方法的名称更改为Index,并且在索引视图中正确显示了图像。 但是,如果我调用另一个视图,则图像会再次消失。 我使用单选按钮来选择不同的视图,如下所示:

public ActionResult Search()
    {
        int id = Convert.ToInt32(Request.Form["radio"]);

        switch (id)
        {
            case 1:
                return View("Customer");
            case 2:
                return View("Orders");
            case 3:
                return View("Employees");
            default:
                ViewBag.Error = "Search parameter not found";
                return View("Index");
        }
    }  

我仍然无法解决此问题,但我认为在某人的帮助下,我将更接近解决方案。

提前致谢

请勿在MVC中使用相对寻址,因为您可以告诉您遇到问题,因为可以从多个路由访问视图(即//Home/Home/Index等。都是相同的视图,但是不同路径,如果您使用../whatever/Home/Index变为/Home/whatever//Home变为/whatever

如果您不在Razor 2+视图中,请始终使用@Url.Content生成URL。 如果您使用的是Razor 2或更高版本,则可以使用src="~/Content/images/whatever"

如果这些方法不起作用,则需要查看您的应用程序根目录,web.config等。因为MVC对站点根目录的位置感到困惑。

好吧,我已经弄清楚了,我觉得自己是个白痴! 我有一个脚本文件,当图像变得足够小时,我可以使用该文件来更改图像,以便随着响应设计的变小而可以继续显示在屏幕上。 像这样:

$("#logoImage").attr("src", "Content/siteImages/logoSmall.png");

好吧,一开始缺少的是导致问题的原因。 添加/修复了我所有的问题。 像这样:

$(“#logoImage”)。attr(“ src”,“ /Content/siteImages/logoSmall.png”);

尽管此刻我感到很傻,但我还是发布了答案,以防其他人出现并遇到类似问题。 尝试修复怪异的问题时,请不要忘记脚本文件,也不要遗漏任何内容。 感谢所有查看此内容并尝试提供帮助的人。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM