2012-03-05 66 views
0

我有一个出现问题,需要用户登录的链接,而且HTML是这样的一个MVC3 Razor视图:返回URL不工作Live服务器上VS开发服务器

<a href="Home/Login?returnUrl=/myprojname/Product/Index"> 

,然后在HomeController中的操作方法登录和一个观点。登录操作方法的哪些帖子值。

里面的后动作方法我检查如果returnurl不为空,然后重定向到该URL。在本地系统返回到这个地址

http://localhost:1235/myProjname/Product/Index

和工作正常。但是,当我把它上传到服务器(IIS 7),它返回到

http://domainname/myProjname/Product/Index

并给出了404,因为没有“myProjname”在那里,如果我删除了“myprojname”,它以这样的URL上工作直播服务器

http://domainname/Product/Index

但我需要改变这样的

<a href="Home/Login?returnUrl=/Product/Index"> 

HREF在这种情况下,它不能与本地系统的工作与URL

http://localhost:1235/Product/Index

请建议的解决方案

回答

2

你是认真的?

好的,我们会一起玩。

解决方案是正确创建链接,而不是硬编码它们。

@Html.ActionLink("Login", "Home", new { returnUrl = Url.Action("Index", "Product") }) 

在旁注中,您可能不需要将returnUrl传递给该操作。在操作方法本身中将其从Request.UrlReferrer.AbsoluteUri中拉回。

没有意思听起来粗鲁,但我强烈建议您前往http://www.asp.net/mvc并进行阅读/观看,然后再继续。

1

使用Url.ActionUrl.Content辅助方法将生成相对于应用程序根的URL,并避免这些问题。

此外,@Href("~/")将生成应用程序根目录的完整路径(从视图)。