asp.net的MVC的Ajax调用
首先的5需要基本URL我想告诉我在ASP.Netasp.net的MVC的Ajax调用
是新我想有网址像
http://example.com/Controller/Action
现在的我从脚本中调用网址是这样
$('#datatable').dataTable({
"aoColumnDefs": [{ 'bSortable': false, 'aTargets': [-1] }],
"oLanguage": { "oPaginate": { "sPrevious": "", "sNext": "" } },
"iDisplayLength": 5,
"aLengthMenu": [[5, 10, 25, 50, -1], [5, 10, 25, 50, "All"]],
"sDom": 'T<"panel-menu dt-panelmenu"lfr><"clearfix">tip',
"oTableTools": {
"sSwfPath": "vendor/plugins/datatables/extras/TableTools/media/swf/copy_csv_xls_pdf.swf"
},
"sAjaxSource": "admin/Categories",
});
目前使用相对URL
"sAjaxSource": "admin/Categories/Index/"
这个网址的问题是它是相对的网址,因为我想在定义cotroller和动作之前定义基础网址。
我如何实现是在标签下的.cshtml文件?
如果我这样做是错误的方式,请纠正我,并告诉我正确的方法,我应该如何实现的Ajax调用的网址?
更新: 对不起,我忘了提,我使用MVC领域,我想有基本URL地区。 管理员在区域目录下定义。
生成你的动作网址的最好方法是:
@Url.Action("ActionName", "ControllerName", new { area = "AreaName" })
如果您使用的是Razor视图中的脚本标签,你可以使用UrlHelper:
'sAjaxSource': '@Url.Action("index", "categories", new { area = "admin" })'
否则,你也可以把它基于root用户的URL有:
"/admin/Categories"
哦对不起,我的坏。管理员是区域,类别是控制器,索引是操作。我没有编写索引,因为它自动地去那里。 我正在使用MVC区域。 – 2014-10-31 17:00:27
@SizzlingCode正如M.Azad所示,它仍然有效,您只需添加区域路由值。 – 2014-10-31 17:04:47
是的,我复制了他的代码,它在区域下工作。谢谢。 – 2014-10-31 17:07:20
我发现的最好的方法是定义你的base ur l在HTML中的布局
<html lang="en">
<head>
<meta charset="utf-8" />
<base href="@Functions.GetApplicationPath(Request)" />
// Other header stuff
</head>
,并定义@函数在App_Code
文件夹中(可能需要创建它)
@functions {
public static string GetApplicationPath(HttpRequestBase request)
{
// Gets the base url in the following format: "http(s)://domain(:port)/AppPath);
var applicationPath = request.Url.Scheme + "://" + request.Url.Authority + GetApplicationType(request);
if (string.IsNullOrWhiteSpace(applicationPath) || !applicationPath.EndsWith("/"))
{
applicationPath += "/";
}
return applicationPath;
}
public static string GetApplicationType(HttpRequestBase request)
{
var applicationType = request.ApplicationPath;
return applicationType;
}
}
这使您可以分离出你的CSHTML和您的JavaScript这样你就可以使用相对URL和基地址将处理任何网站前缀,如http://yoururl/blah/actualsiteHere
它只是一个'.cshtml'文件,你可以在App_Code文件夹中创建(右键单击项目 - >添加 - >添加ASP .NET文件夹 - > App_Code)。您无需执行任何操作即可使用基本网址,它会告知浏览器从哪里请求。所以,如果你在请求'/ page.html'的时候将base url设置为'/ application/site',它会查看'/ application/site/page.html'。 – John 2014-10-31 21:43:02