How To Route Legacy QueryString Parameters In MVC 3
Mar 11, 2011
I am using a third party service that does an async callback to a URL I provide to them. So I tell them to use [URL] This must obviously map to an Incoming() method on my StatusController.
However, what I don't have control over is the format of the parameters they call my URL with. E.g. They will do a callback such as: [URL] I want to map this to the parameters of my action method: Incoming(string param1, string param2, int param3)
In Area VIPUsers I have controller ProfileController and other controllers.
If I want every method in ProfileController to have parameter (id) and every method in other controllers to have parameter (userid and id) how would I map it?
Would it be
context.MapRoute("ProfileMapping", "VIPUsers/Profile/{action}/{id}", new {controller="ManageUsers", id=""});
and then map a default one for all the controllers?
context.MapRoute("Default", "VIPUsers/{controller}/{action}/{userId}/{id}", new {action="Index", userId="", id = ""});
If I go to a page on ProfileController and give it two parameters after {action} (VIPUsers/Profile/SomeAction/4/4/), it'd use the second mapped route. Is that correct?
I have a post-only action that has a different route. In my form, I need to post to it, but also keep the querystring values I currently have.
Initial response: /my/first/path/?val1=hello Needs to post to: /my/other/path/?val1=hello
It seems when I specify a route, it of course only returns the route and doesn't append the querystring values of my original page (for obvious reasons).Is it possible to cleanly append querystring values to my the action attribute of the form tag?
Does outputcaching VaryByParams in webforms understand route parameters? Such that if I have a route similar to "Content/{filename}/{more}" that I could do VaryByParams="filename" and have it return cached results based on filename and ignore any values in the more?
I have a details page containing a form field named UserId. On the same page i have another search form with a field also named UserId.
I am using Html.LabelFor(vm > vm.UserId) and Html.TextBoxFor(sm > sm.UserId) on the two different view models, vm being the view model and sm being the search model. (Yes, the UserId property on the two models has identical names - because they are the same domain property.
When i navigate to the page, the populated UserId on the vm is inserted into BOTH form fields named UserId by MVC. Even the sm.UserId are empty.
That is my initial problem. There are a few ways ti avoid that. My solution was to use the Prefix flag for the sm.
[code]...
My problem is that MVC can't map the Search.UserId (because of the .) to fit the UserId (prefixed with Search) in the action shown above.
So it seems like MVC has a prefix-feature, that are actually nok fully supported through the Route-handler.
Ofcourse i could rename the Search.UserId to Search_UserId, but then the name dosent match the name MVC expects in the recieving action above. (expects Search.UserId) Renaming The UserId property of the search model would fix the issue, but since it is the same value in the domain, this seems like a workaround.
I have two examples to show you what I want to achieve here. But to point what's different about my question, Is that I'm having a parametrized URLs and I want to implement URL rewriting to my application. But I don't want to convert the parameter in the URL to be placed between slashes..."page.aspx?number=one" to "pages/one/" << NOT!
First example:
http://localhost:1820/Pages/Default.aspx?page=2&start=5 To http://localhost:1820/Pages/page2
Second example:
http://localhost:1820/Items/Details.aspx?item=3 To http://localhost:1820/Items/ItemName
But I'll still need all the parameters in the original URLs
I try to have an URL like this /Forum/Index/2 for url I have a route {controller}/{action}/{page} in my global.asax
If i test the above url with the Route Debugger it corresponds to the above route ( and some other but this is the fist one in the list ) but if I create an url with the ActionLink
( like this : [Code]....
), this methode return me this URL /Forum/Index?page=2 Is there a way to a have an url with nothing in querystring with the ActionLink methode ? Gauthier
I wanted to ask about URL rewriting. I want to map this: [URL] To: [URL] Being DVD players product id 123.
Also I will like to map sub domains like this: From: [URL] To: [URL]
Being John Doe user id 123. I will like to do this by getting the respective ID (for products and users) from a database based on product id name (dvdplayers) and sub domain name (johndoe). Where can I intercept these 2 (sub domain string and product name string) and based on this getting the info from DB and "rewrite" the URL's?
How can I pass two querysting parameters in URL routing using ASP.NET 4.0? I have gone through many articles, but everywhere it shows only one parameter. I'd like the display URL to be: [URL] The first parameter is ID: 1 The second is Name: This is my first report I am trying following route, but it is not working
routes.MapPageRoute( "MarketReports", // Route name "Reports/{*i}-{*n}", // Route URL "~/pageControl2.aspx" // Web page to handle route );
My querystring has 2 parameters say pm1 and pm2. I want to check the value of each and if the value if '1' then pop open a new window(one for each parameter) and the url for the two windows will be different.
Which is the best way (in performance and security) to send multiple parameters to a web page (on a different server), considering that the length of the parameters may vary because I'm sending a list of products, and the customer may have selected more than one product, so we need to send each product on the querystring to the other page. For example (I'm on C#); I want to call a web page like this:
(Obviouly considering we can't send special characters via querystring, but I put them here for better understanding) Which will be the better way (performance, security)?
I'm working on an online payment store, where users would pay by their credit cards to buy stuff. After they paying, master card website would return them back to my website, and sending back some params as querystrings like this http://mywebsite/done.aspx?param=1¶m2=2.
i want to get the parameters in my page load event (language as C#). i dont know how the get the values for "Label", "ID", "Value" and "Mask" from the query string. all the data need to be put on the array like LabelArr, IDArr, ValueArr and MaskArr.
I'm using the iis7 URL Rewrite module and it's working fine, except for two things. Being new to this, I might be missing something obvious.
1) My URL gets converted from www.mysite.com/search.aspx?fName=John&sName=Smith to www.mysite.com/John/Smith. This works fine, but if I add a trailing / , a few images on the site disappear, wheras a few don't. (They're all in the same location). However, the search results are fine.
2) Is it possible to make cerain querystrings optional? Server side, this is implemented (i.e. if nothing is entered, then assume a default value). But how would this work with the URL rewrite module? e.g. www.mysite.com/John would search for John and use a default value for the sName parameter.
When I run a page using the above config file, I get an error saying The requested page cannot be accessed because the related configuration data for the page is invalid. (it doesn't like the ampersand in the address)
protected void Submit(object sender, EventArgs e) Â Â Â { Â Â Â Â Â Â Â string name = HttpUtility.UrlEncode(Encrypt(txtName.Text.Trim())); Â Â Â Â Â Â Â string technology = HttpUtility.UrlEncode(Encrypt(ddlTechnology.SelectedItem.Value)); Â Â Â Â Â Â Â Response.Redirect(string.Format("~/CS2.aspx?name={0}&technology={1}", name, technology)); Â Â Â }
But I used hyperlink and used it in datalist that bind from database...