【问题标题】:MVC3 URL as parameterMVC3 URL 作为参数
【发布时间】:2011-06-28 11:59:29
【问题描述】:
【问题讨论】:
标签:
c#
asp.net-mvc
asp.net-mvc-routing
【解决方案1】:
我建议您使用查询字符串参数,并确保该值是正确的 url 编码:
http://website/controller/method?url=http%3A%2F%2Fotherurl.com
在行动内部:
public ActionResult Method(string url)
{
// The url parameter here will equal to "http://otherurl.com"
...
}
【解决方案2】:
URL 由两部分组成,第一部分是域(我认为),这里重要的是第二部分,称为查询字符串。 (第一部分是强制性的,第二部分不是)。
这是一个例子:
http://your-domain-here/stuff?page=1
现在page 是一个查询字符串变量。您必须注意 ? 将 Url 的两个部分分开,我在您的 URL 中看不到一个,因此 IMO,MVC 路由引擎将尝试将整个 Url 与已注册的路由匹配(找不到)。
不,我会说,您不必创建新路由,当我们需要新的“路径”时会创建新路由,但在您的情况下,您只需要改进 URL 以分隔路由查询字符串。
希望对您有所帮助。
【解决方案3】:
您必须创建另一条路线,
类似:
routes.MapRoute( "UrlByParam", //Route Name
"{controller}/{action}/{url}", //Url Pattern
new { controller = "DefaultController", action = "DefaultAction" }); //Defaults
您还必须对您的网址进行编码,
所以,
http://website/controller/method/http://otherurl.com
会变成
http://website/controller/method/http%3A%2F%2Fotherurl.com