MVC 5 C#路径在发布asp.net项目后发生了变化

时间:2014-08-14 17:01:09

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

所以这是一个愚蠢的问题,因为我知道有一个简单的解决方案,我只是想不出来......

目前我在visual studio 2013中运行我的MVC 5项目...通常当我想调试它时,我只需点击运行,网站将出现在我选择的浏览器中......

我最近刚刚将它发布到我公司的网络服务器上,现在我遇到了各种各样的问题......

该主页/索引页面上的网站只有15个按钮,我希望能够点击按钮并仍然在我的本地主机端运行它们,当我发布它们时,仍然让它们找到正确的路径.. < / p>

这是一个例子,因为我不太善于解释事情...... 我在visual studio中运行它,我的网址是:

http://localhost:54641/Home/Index

我在网络服务器上运行我发布的网站,我的网址是:

http://webserver/racklabels/dakkota/Home/Index

我理解这一部分,在任何一种情况下,它们都可以工作,但是当点击一个按钮或图像时......路径很奇怪,我也不理解。

在visual studio中,我点击我的第一个按钮,我的网址变为:

http://localhost:54641/RecieveTruck/AddFor

在我的网络服务器上,我点击它,然后转到:

http://webserver/RecieveTruck/AddFor

但是给了我404错误,因为它不是正确的路线(应该是..

http://webserver/racklabels/dakkota/RecieveTruck/AddFor

这就是我在我的View(Index.cshtml)中设置按钮的方法,我想知道这是否是导致问题的原因(我想我可能不得不以不同的方式使用onclick)

<input type="button" name="receive" value="Receive Truck" style="cursor: pointer;" class="bodyText"
    onmouseover="this.style.color='orangered';" onmouseout="this.style.color='black';"
    onclick="document.location.href='/RecieveTruck/AddForm';">

基本上我希望无论我在发布它之后有多少文件夹以及我在visual studio中单击运行(因此我可以调试/测试并在我想要更新时重新发布到网络服务器)

我尝试了许多不同的发送路径的方法......比如'〜/ RecieveTruck / AddForm'(只是将〜添加到地址)和'../RecieveTruck/AddForm',只是'RecieveTruck / AddForm'但他们都没有找到项目所在地的实际根,只是将其添加到其中......

有人能帮助我吗?

2 个答案:

答案 0 :(得分:2)

您可以使用

@Url.Content("~/Home/Index")

但这完全忽略了mvc路由的好处。

如果你想为控制器动作生成网址,那么 更好地使用

@Url.Action("Index","Home")

...所以现在如果你设置一些snappy路由规则,.Action提供的url将自动调整(例如省略在路由规则中有默认值的url部分)。

答案 1 :(得分:1)

你需要添加&#34;〜&#34;在url document.location.href =&#39;〜/ RecieveTruck / AddForm&#39;

的前面

或者如果不起作用,请使用document.location.href =&#39; @ Url.Content(&#34;〜/ RecieveTruck / AddForm&#34;)&#39;