Using umbraco 6.1.6 and I have a surface controller called CommentSurface in there I have method AddLike. I call the method using ajax link code looks like
@Ajax.ActionLink(GetLikeLabel("Site.Pages.Product.Review.Likes", comment.Likes, umbraco),
"AddLike",
"CommentSurface",
new { commentId = comment.Id, like = true },
GetLIkeAjaxOptions(comment, umbraco, "true")
This renders link html that looks like
<a class="thumbs--up icon icon--15" data-ajax="true" data-ajax-failure="$('#likeResult-1254').html('<p>You have already liked this comment</p>')" data-ajax-loading="#loadingComments" data-ajax-method="GET" data-ajax-mode="after" data-ajax-success="(function(){likeSuccess('1254',true,'.comment--item');})();" data-ajax-update="#likeResult-1254" href="/umbraco/Surface/CommentSurface/AddLike?commentId=1254&like=True" id="like1254">Like</a>
This all works fine. The issue is on our live server we have url rules set up so that the umbraco backoffice cannot be hit so any url /umbraco will redirect to home page. What I am planning to do is add url rewrite in web.config so that i can make call like /somesite/Surface/CommentSurface/AddLike and that will resolve to /umbraco/Surface/CommentSurface/AddLike.
So the question is on a controller and method in controller is there any kind of attribute to create a different url so instead of
For it to be a surface / umbraco api controller, I don't think there is a way to get /umbraco out of the url. The only way I can think to do it is by using a bog standard controller / api controller, and registering your own route just like you would in a regular mvc app. The only down side is you wouldn't get access to any of the convenience methods in the controller (but then if you are accessing it via ajax, I don't think you'll need any of the "redirect to current page" type functions).
Actually, looking at how surface controllers are registered, you could replace /umbraco in the URL by changing the umbracoPath in the web.config. But I don't thing that will help you much, as you'd then need your rewrites to block that path for any url that isn't a surface controller / api controller aswell.
Alias ajaxlink to controller
Using umbraco 6.1.6 and I have a surface controller called CommentSurface in there I have method AddLike. I call the method using ajax link code looks like
This renders link html that looks like
This all works fine. The issue is on our live server we have url rules set up so that the umbraco backoffice cannot be hit so any url /umbraco will redirect to home page. What I am planning to do is add url rewrite in web.config so that i can make call like /somesite/Surface/CommentSurface/AddLike and that will resolve to /umbraco/Surface/CommentSurface/AddLike.
So the question is on a controller and method in controller is there any kind of attribute to create a different url so instead of
/umbraco/Surface/CommentSurface/AddLike
I can get
/somesite/Surface/CommentSurface/AddLike
and use url rewrite to resolve to right place.
Regards
Ismail
Hey Ismail,
For it to be a surface / umbraco api controller, I don't think there is a way to get /umbraco out of the url. The only way I can think to do it is by using a bog standard controller / api controller, and registering your own route just like you would in a regular mvc app. The only down side is you wouldn't get access to any of the convenience methods in the controller (but then if you are accessing it via ajax, I don't think you'll need any of the "redirect to current page" type functions).
Matt
Actually, looking at how surface controllers are registered, you could replace /umbraco in the URL by changing the umbracoPath in the web.config. But I don't thing that will help you much, as you'd then need your rewrites to block that path for any url that isn't a surface controller / api controller aswell.
Matt
Matt,
According to docs https://msdn.microsoft.com/en-us/library/system.web.mvc.ajax.ajaxoptions%28v=vs.118%29.aspx there is AjaxOptions object it has url parameter you can set that and in the rendered html you get data-ajax-url and it uses that. You still get href as the full umbraco url. So I am going to go with this time to do some url re writes ;-}
Regards
Ismail
is working on a reply...