I have a ASP.NET website that is URL-Rewriting enabled. I know how to get route parameters using C#:
Page.RouteData.Values["id"] as string;
But I don't know how to get it from javascript? Following is my rewritten link format:
/{id}/{title}
I want to get this {id} field using JavaScript. Please help!
UPDATE
I have this code that gets request parameter.
function getParameterByName(name) {
name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
results = regex.exec(location.search);
return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
How can this be modified to get route parameter?
I have a ASP.NET website that is URL-Rewriting enabled. I know how to get route parameters using C#:
Page.RouteData.Values["id"] as string;
But I don't know how to get it from javascript? Following is my rewritten link format:
http://www.domain./topic/{id}/{title}
I want to get this {id} field using JavaScript. Please help!
UPDATE
I have this code that gets request parameter.
function getParameterByName(name) {
name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
results = regex.exec(location.search);
return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
How can this be modified to get route parameter?
Share Improve this question asked Nov 30, 2013 at 16:40 Aishwarya ShivaAishwarya Shiva 3,40616 gold badges61 silver badges111 bronze badges 5- Check this post, I think you'll find the solution there: link – jalba Commented Nov 30, 2013 at 16:43
- URL-parameter is different thing. I don't think it will work. – Aishwarya Shiva Commented Nov 30, 2013 at 16:44
-
if your format is
http://www.domain./topic/{id}/{title}
then why don't youwindow.location.href
in a string; split it on '/'; and then access the particular index. – Vikram Deshmukh Commented Nov 30, 2013 at 16:49 - @srvikram13 please provide an example what you exactly want to say. – Aishwarya Shiva Commented Nov 30, 2013 at 16:55
- @AishwaryaShiva check the solution I've posted below. – Vikram Deshmukh Commented Nov 30, 2013 at 17:25
2 Answers
Reset to default 8function getValueAtIndex(index){
var str = "http://www.sample./234/Fiddle/test"; //window.location.href;
return str.split("/")[index];
}
console.log(getValueAtIndex(3));
Update
Here's a much cleaner way of getting value at an index in the route using plain JS:
location.pathname.split('/')[index]
For example, for the current page,
location.pathname = '/questions/20302776/how-to-get-route-parameter'
You can get the question id by doing:
location.pathname.split('/')[2]
// Notice that the index does not start from zero.
Try the following:
const getRouteValueAt = (idx) => {
const routeTokens = location.pathname.replace(/^\/+/g,'').split('/')
//[questions,20302776,how-to-get-route-parameter-in-javascript]
return routeTokens.length > idx ? routeTokens[idx] : undefined
}
Usage
const routeName = getRouteValueAt(0); // questions
const routeId = getRouteValueAt(1); // 20302776