【问题标题】:Clicking on link removes the application name from URL, and moves back单击链接会从 URL 中删除应用程序名称,然后返回
【发布时间】:2015-10-04 13:27:47
【问题描述】:

我有一个网站www.xyz.com 托管在 IIS 上。 我在同一个网站中创建了几个子应用程序。

所以,我的网址变成了www.xyz.com/app1,现在在aap1 主页上我有下面的链接,它会在同一app1 上打开页面

<a href="Masters/Index">Index</a>

但是当我点击链接时,它会从 URL 中删除应用程序名称(即app1)并像下面这样浏览

www.xyz.com/Masters/Index 我最终得到resource not found 错误。

而应该是www.xyz.com/app1/Masters/Index

我尝试使用..//./ 前缀作为链接链接,但它们似乎都不起作用。我错过了什么?

请帮忙。

【问题讨论】:

  • Mastersapp1 是否在同一目录级别?这可以解释这个问题。
  • 如果你使用完整路径,它是否有效? &lt;a href="http://yoursite.com/app1/Masters/Index"&gt;Index&lt;/a&gt;
  • 是的,它确实有效
  • 这会带你去哪里? &lt;a href="/Masters/Index"&gt;Index&lt;/a&gt;
  • 这会将我带到www.xyz.com/Masters/Index 并从网址中删除app1

标签: c# html asp.net asp.net-mvc iis


【解决方案1】:

在您的 app1 中,使用 Html.ActionLink 帮助器代替硬编码链接:

@Html.ActionLink("Index", "Masters", "Index")

这应该保留当前 Web 应用程序的现有路由。

LinkExtensions.ActionLink Method (HtmlHelper, String, String, String)

如果您希望只更新标记中的 url,也可以使用 @Url.Action

<a href="@Url.Action("Masters", "Index")">Index</a>

【讨论】:

  • 是的,这是一个选项,但在 ajax 请求的情况下这将不起作用.. 我的语法类似于 url: 'Masters/AddChangeMasterData',
  • @PravinDeshmukh 您如何为 ajax 调用构建 url?您可以在 razor 文件中使用 @Url.Action,它的工作原理相同。
  • @PravinDeshmukh 如果你使用@Url.Action helper,你可以获得不带HTML标签的URL。它对于嵌入 JavaScript 或直接嵌入到 &lt;a href=''&gt; 元素中很有用。
  • 天啊,我不知道,当然有帮助。谢谢和欢呼!!
  • @PravinDeshmukh 没问题。谢谢。 :)
猜你喜欢
  • 2011-09-26
  • 2013-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-24
  • 1970-01-01
  • 2013-08-09
  • 1970-01-01
相关资源
最近更新 更多