Hi, I am trying to put a relative URL against a read property in a dataSource but when the page is rendered, the dataSource always seems to be prefixing the URL with a '/' making it look from the root. Any way to get around this please?
9 Answers, 1 is accepted
0

Chris
Top achievements
Rank 1
answered on 28 Dec 2012, 03:19 PM
I am also interested in this, any solutions please?
0
Hello,
Atanas Korchev
the Telerik team
The solution is to output the URL from server-side code. The actual implementation depends on the server-side technology.
Regards,Atanas Korchev
the Telerik team
Join us on our journey to create the world's most complete HTML 5 UI Framework - download Kendo UI now!
0

Chris
Top achievements
Rank 1
answered on 28 Dec 2012, 03:44 PM
Hi,
Thanks for the reply.
I'm doing it using Kendo UI without the MVC helpers (coding JS only) and when the page URL is "/Sales" and the URL I put on the read property fro a data source is simply "Orders", I would expect it to request "/Sales/Orders" rather than "/Orders", which is what is actually being requested.
I know this is not a server side issue because I can see in the Chrome Developer tools that "/Orders" is the URL being requested when I fetch the data using the data source when using a URL of just "Orders".
I can only interpret your response as meaning to use server side code to specify the URL which, on rendering, outputs the absolute URL for Kendo DataSource to use, is this correct? Are you saying that Kendo DataSource cannot interpret relative URLs specified directly in JS code?
Thanks for the reply.
I'm doing it using Kendo UI without the MVC helpers (coding JS only) and when the page URL is "/Sales" and the URL I put on the read property fro a data source is simply "Orders", I would expect it to request "/Sales/Orders" rather than "/Orders", which is what is actually being requested.
I know this is not a server side issue because I can see in the Chrome Developer tools that "/Orders" is the URL being requested when I fetch the data using the data source when using a URL of just "Orders".
I can only interpret your response as meaning to use server side code to specify the URL which, on rendering, outputs the absolute URL for Kendo DataSource to use, is this correct? Are you saying that Kendo DataSource cannot interpret relative URLs specified directly in JS code?
0
Hi,
Atanas Korchev
the Telerik team
Kendo DataSource doesn't do anything to interpret relative URLs. The browser interprets relative urls (you can try with a regular hyperlink to see for yourself).
You should use Url.Action in ASP.NET MVC to get the proper url:
dataSource: {
transport: {
read: {
url: '@Url.Action("action", "controller")'
}
}
}
Atanas Korchev
the Telerik team
Join us on our journey to create the world's most complete HTML 5 UI Framework - download Kendo UI now!
0

Chris
Top achievements
Rank 1
answered on 28 Dec 2012, 04:03 PM
Hi,
Sorry, I don't think we are understanding each other. Firstly, I cannot use Url.Action, because I don't always know the controller AND this code will be in a seperate JS file (which means it won't get parsed by the server). To put the issue simply, I would just like to be able to specify the following in a JS file:
// code
transport: {
read: 'Orders'
}
// more code
This is so that where-ever I want to use this in my MVC application I can include this script file and it will show orders, for example, I might want to include in one or more of the following URLs:
http://mydomainname.com/Sales (http://mydomainname.com/Sales/Orders)
http://mydomainname.com/Purchase (http://mydomainname.com/Purchase/Orders)
http://mydomainname.com/Work (http://mydomainname.com/Work/Orders)
And for each one, the datasource should use the URL specified in brackets above, however, it currently does not. If I specify the url as I have above in the JS code, each time I go to one of these pages, the requested URL is http://mydomainname.com/Orders. I hope you understand now?
Sorry, I don't think we are understanding each other. Firstly, I cannot use Url.Action, because I don't always know the controller AND this code will be in a seperate JS file (which means it won't get parsed by the server). To put the issue simply, I would just like to be able to specify the following in a JS file:
// code
transport: {
read: 'Orders'
}
// more code
This is so that where-ever I want to use this in my MVC application I can include this script file and it will show orders, for example, I might want to include in one or more of the following URLs:
http://mydomainname.com/Sales (http://mydomainname.com/Sales/Orders)
http://mydomainname.com/Purchase (http://mydomainname.com/Purchase/Orders)
http://mydomainname.com/Work (http://mydomainname.com/Work/Orders)
And for each one, the datasource should use the URL specified in brackets above, however, it currently does not. If I specify the url as I have above in the JS code, each time I go to one of these pages, the requested URL is http://mydomainname.com/Orders. I hope you understand now?
0
Hi,
Atanas Korchev
the Telerik team
I understand you. I am not sure how this can be done though. How do you implement the same for regular hyperlinks?
Kind regards,Atanas Korchev
the Telerik team
Join us on our journey to create the world's most complete HTML 5 UI Framework - download Kendo UI now!
0

Chris
Top achievements
Rank 1
answered on 28 Dec 2012, 04:12 PM
Hi,
If my page URL is "http://mydomainname.com/Sales" and I put a hyperlink as <a href='Orders'>Go to orders</a>, when clicked, this will go to "http://mydomainname.com/Sales/Orders".
However, what I am saying is that the DataSource widget seems to request "http://mydomainname.com/Orders" when I just put "Orders" as a relative URL for the read property when used in a page with the URL "http://mydomainname.com/Sales".
If my page URL is "http://mydomainname.com/Sales" and I put a hyperlink as <a href='Orders'>Go to orders</a>, when clicked, this will go to "http://mydomainname.com/Sales/Orders".
However, what I am saying is that the DataSource widget seems to request "http://mydomainname.com/Orders" when I just put "Orders" as a relative URL for the read property when used in a page with the URL "http://mydomainname.com/Sales".
0
Hi,
Atanas Korchev
the Telerik team
I tried this in a jsbin demo: http://jsbin.com/oxohut/1/edit The data source makes a request to http://jsbin.com/oxohut/1/Orders.
Regards,Atanas Korchev
the Telerik team
Join us on our journey to create the world's most complete HTML 5 UI Framework - download Kendo UI now!
0

Chris
Top achievements
Rank 1
answered on 02 Jan 2013, 11:49 AM
Thanks for the reply and the demo, after investigating this some more I found that it is to do with using MVC, if an index page is requested, the browser treats the controller as the page name and therefore sets the base url to the path prior to the controller name, i.e. "http://mydomainname.com/Sales" gets converted in MVC to "http://mydomainname.com/Sales/Index" and the index page is returned. I assumed that the browser would know this but of course it doesn't, the browser assumes that Sales is the page not the path and therefore sets the base url to "http://mydomainname.com/". Therefore, when it makes the request to the datasource, it requests "http://mydomainname.com/Orders" and not "http://mydomainname.com/Sales/Orders" like I was hoping.
To fix this I've just outputted the meta tag <base href="http://mydomainname.com/Sales" /> and the requests now work as expected. I hope this helps other people that come across this issue and I apologise for incorrectly thinking this was a Kendo issue.
To fix this I've just outputted the meta tag <base href="http://mydomainname.com/Sales" /> and the requests now work as expected. I hope this helps other people that come across this issue and I apologise for incorrectly thinking this was a Kendo issue.