I want to create a MVC application that recieves a URL as parameter. How to achieve that?
- Recieve the parameter directly on the URL?
- Create Get and Post methods passing internally the URL from the Get one to the Post one?
I tried the first option but still cannot recieve URLs like http://website/controller/method/http://otherurl.com
Do I have to create a ne开发者_运维技巧w route to achieve this?
Thanks everyone.
I would recommend you using a query string parameter and also make sure the value is properly url encoded:
http://website/controller/method?url=http%3A%2F%2Fotherurl.com
and inside the action:
public ActionResult Method(string url)
{
// The url parameter here will equal to "http://otherurl.com"
...
}
URLs consist of two parts, the first part is the domain (I think) and what matters here is the second which is called the query string. (the 1st part is mandatory, the 2nd is not).
this is an example:
http://your-domain-here/stuff?page=1
Now page
is a query string variable. You have to notice the ?
which separates the two parts of the Url, I don't see one in your URL, so IMO, MVC routing engine will try to match this whole Url with a registered route (which will not be found).
No, I would say, you don't have to create a new route, new routes are created when we're in need of a new "Path" but in your case you only need to improve the URL to separate the route off the query string.
Hope that helps.
You would have to create another route, something like:
routes.MapRoute( "UrlByParam", //Route Name
"{controller}/{action}/{url}", //Url Pattern
new { controller = "DefaultController", action = "DefaultAction" }); //Defaults
And you also have to encode your URL, so,
http://website/controller/method/http://otherurl.com
would become
http://website/controller/method/http%3A%2F%2Fotherurl.com
精彩评论