【发布时间】:2014-08-05 20:50:17
【问题描述】:
我有以下问题。我创建了一个布局和两个使用它的视图。每个视图使用不同的控制器。部分布局是带有站点名称的导航。我想要做的是使站点名称链接始终指向主页/索引操作。当我在主控制器视图上单击站点名称时,它可以工作,但是当我使用不同的控制器转到其他站点时,它会引发错误。
描述:HTTP 404。您要查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请查看以下 URL 并确保其拼写正确。
我使用默认路由设置。
请求的网址:/index.html
下面是部分模板代码。
@使用 System.Web.Script.Services
<title>Galeria zdjęć</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Art Mission</title>
<!-- Bootstrap -->
<link href="~/Css/bootstrap.min.css" rel="stylesheet" />
<link href="~/Css/style.css" rel="stylesheet" />
@RenderSection("Style", false)
<!-- Navbar
================================================== -->
<div class="navbar navbar-default navbar-fixed-top" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse"
data-target="#bs-example-navbar-collapse-1">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="@Url.Action("Index", "Home")">ArtMission</a>
</div>
<div id="bs-example-navbar-collapse-1" class="collapse navbar-collapse">
<ul class="nav navbar-nav navbar-right">
<li><a href="@Url.Action("Show", "Gallery")">Galeria</a></li>
<li><a href="#oferta">Oferta</a></li>
<li><a href="#contact">Kontakt</a></li>
</ul>
</div>
<!--/.nav-collapse -->
</div>
</div>
<!-- /.navbar -->
@RenderBody()
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<!-- Include all compiled plugins (below), or include individual files as needed -->
<script type="text/javascript" src=@Url.Content("~/Scripts/bootstrap.min.js")></script>
@RenderSection("Script", false)
提前感谢您的帮助。
编辑:我包括了完整的布局。
【问题讨论】:
-
/index.html将查找名为index.html的物理文件。带有文件扩展名的 URL 会绕过路由框架。要获得HomeController.Index操作,您必须使用 URL/Home/Index、/Index或仅使用/(基于默认路由)。 -
我刚刚注意到,当我将鼠标悬停在链接上时,它显示:localhost:port/Gallery/index.html。我不明白为什么它显示的控制器与我在@Url.Action("Index", "Home") 中设置的控制器不同,以及为什么要添加 .html。
-
您可能在某处缺少或不完整的标记,这会导致 URL 在浏览器尝试“修复”标记时被抬高。或者,也许页面上的某些 JavaScript 行为不端。一个简单的检查方法是在浏览器中禁用 JavaScript 并查看 URL 是否相同。此外,检查实际渲染的源(右键单击 -> 查看源)。查看 URL 是否正确。
标签: asp.net asp.net-mvc asp.net-mvc-4 url-action