[英]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.