AbsoluteUri需要返回正确的路径

时间:2017-12-04 02:26:14

标签: c# asp.net-mvc

在我的 MVC视图中使用下面的方法我得到的网址类似于" localhost:54871/Home/Index"但我不想要"索引"在最后。它应该只是" localhost:54871/Home"。我该如何实现呢?

@(Request.Url.AbsoluteUri)

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

您可以尝试以下方法。

例如,如果带参数的网址如下所示

http://localhost:61221/Websitetest/Default1.aspx?QueryString1=1&QueryString2=2

然后使用以下代码,您可以获得结果

HttpContext.Current.Request.Url.Host
HttpContext.Current.Request.Url.Authority
HttpContext.Current.Request.Url.Port
HttpContext.Current.Request.Url.AbsolutePath
HttpContext.Current.Request.ApplicationPath
HttpContext.Current.Request.Url.AbsoluteUri
HttpContext.Current.Request.Url.PathAndQuery

将提供如下输出

<强>输出

localhost
localhost:61221
61221
/Websitetest/Default1.aspx
/Websitetest
http://localhost:61221/Websitetest/Default1.aspx?QueryString1=1&QueryString1=2
/Websitetest/Default1.aspx?QueryString1=1&QueryString2=2

答案 1 :(得分:0)

使用Request.Url.AbsoluteUri时,网址会根据用户的当前页面进行更改。

如果用户访问http://localhost:0000/Home/,则AbsoluteUrihttp://localhost:0000/Home/

如果用户访问http://localhost:0000/Home/Index,则AbsoluteUrihttp://localhost:0000/Home/Index

MVC url生成基于RouteConfig.cs文件中定义的路由定义。

您可以仅为控制器名称定义路线,请检查thisthis

还有另一种解决方案如下:

@{
Uri uriAddress = new Uri(Request.Url.AbsoluteUri);

string urlLeftPart = uriAddress.GetLeftPart(UriPartial.Authority);

string controllerName = HttpContext.Current.Request.RequestContext.RouteData.
Values["controller"].ToString();

string finalURL = urlLeftPart + "/" + controllerName;
}

<a href="@finalURL">Url Without Action Name</a>

参考

1.

2.