所以这是一个愚蠢的问题,因为我知道有一个简单的解决方案,我只是想不出来......
目前我在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'但他们都没有找到项目所在地的实际根,只是将其添加到其中......
有人能帮助我吗?
答案 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;