Reputation: 4191
I been trying to use @Url.Action
inside Ajax url
in another external .JS
file but unfortunately i got no luck.
Here's my Code:
$.ajax({
type: 'post',
url: "@Url.Action("ClearData","Home")",
success: function () {
}
});
This Code working only inside the View itself but not in Javascript externally
.
Iv'e been searched some possible solution but it seems different than this.
Is there any alternative way to use @Url.Action
in another .Js
File?
Upvotes: 3
Views: 5265
Reputation: 864
You can create a partial view, then inside this view are just list of hidden fields such as
@Html.Hidden("ActionName", @Url.Action("ActionName", "Controller"))
which generates this
<input id="ActionName" name="ActionName" type="hidden" value="/controller/ActionName">
then you can call it like
var urlAction = $('#ActioName').val();
or you can create a js function like what I did
function ActionCaller(actionName)
{
return $('#' + actionName).val();
}
var action = ActionCaller(ActionName);
Upvotes: 0
Reputation: 152
if your js code inside view
$.ajax({
type: 'post',
url: "@Url.Action("ClearData","Home")",
success: function () {
}
});
this is work
when js code is an separate (external file)
@Url.Action("ClearData","Home")
is not work ,
this case you have to write total url or folder path
Upvotes: 1
Reputation:
@Url.Action()
is razor (server side) code and is not parsed in external files. Options include
Declaring a global variable in the main file, say
var url = @Url.Action("ClearData","Home");
and then in the external script use url: url
in the ajax call
Including a data-
attribute in the element your handling, for example if its a button click event, then
<button data-url="@Url.Action("ClearData","Home")" id="mybutton">
and then reading that value in the external file, for example
$('#mybutton').click(function() {
var url = $(this).data('url');
$.ajax({
url: url,
....
Upvotes: 7