English 中文(简体)
Ajax, asp.net mvc3 路线和相对星际
原标题:Ajax, asp.net mvc3 routes and relative urls

我有一个ASP.NET MVC3应用软件 发布在像这样的尿素上:

http://servername.com/Applications/ApplicationName/

在我的代码中,我使用jquery ajax这样的要求:

$.get(( a/b/c ), function (data) {}, "json");

当我在当地运行应用程序时, ajax 请求直接转到正确的页面( mvc 路径), 因为本地页面以“ /” (localhost/a/b/c/c ) 结束 。

然而,当我发表到http://servername.com/Applications/ApplicationName/ 时,追踪的“/”并不总是存在。URL可以是http://servername.com/Applications/ApplicationName ,这又导致ajax请求试图装入http://servername.com/Applications/ApplicationNamea/b/c ,由于明显的原因而失败。

我已经研究过改写URL, 以附加一个尾随的斜线, 但A)它没有奏效, B)我觉得这是一个解决问题的错误办法,

我试了"./a/b/c"和"/a/b/c",但似乎都行不通。

提前感谢您的帮助!

最佳回答

我个人倾向于使用服务器相对 URL 的全局变量,

var BASE_URL =  @Url.Content("~/") ;

然后,你可以做一些事情,比如:

$.get(BASE_URL +  a/b/c ), function (data) {}, "json");

我想补充的是,如果你想把它完全全球化,你可以把它加入你的/意见/Shared/_Layout.cshtml。

问题回答

我遇到同样的问题, 最后创建了两个 JavaScript 函数, 反映 MVC Url 辅助器方法 < code>Url. Action 和 Url. Content 的功能。 函数定义在 _ Layout. cshtml 文件, 因此在所有视图中都可以使用, 无论应用程序位于本地主机的根部还是服务器的子文件夹中, 工作也都可以使用 。

<script type="text/javascript">
    function UrlAction(action, controller) {
        var url = ( @Url.Action("--Action--","--Controller--") ).replace("--Action--", action).replace("--Controller--", controller);
        return url;
    }

    function UrlContent(url) {
        var path = "@Url.Content("~/--file--")";
        path = path.replace("--file--", url.replace( ~/ ,   ));
        return path;
    }
</script>

然后可以这样称呼它们:

var url = UrlAction( AvailableAssetClasses ,  Assessment );
var url2 = UrlContent( ~/Images/calendar.gif );

在 ASP.NET MVC 应用程序中生成 urls 时, 总是使用 Url 助手来生成 URL, 而不硬码 。 所以如果此脚本直接在视图中 :

<script type="text/javascript">
    var url =  @Url.Action("a", "b") ;
    $.get(url, function (data) {}, "json");
</script>

如果此脚本位于一个单独的 javascript 文件( 理应如此) 中, 您无法访问服务器辅助助手, 您可以简单地将 URL 放在某个相关的 DOM 元素中。 例如, 使用 HTML5 数据 - * 属性 :

<div data-url="@Url.Action("a", "b")" id="foo">Click me</div>

然后在你写字的档案里:

$( #foo ).click(function() {
    var url = $(this).data( url );
    $.get(url, function (data) {}, "json"); 
});

如果你是无拘无束的 AJAXI 锚或表单, 那么,你已经有了内脏:

$( a#someAnchor ).click(function() {
    var url = this.href;
    $.get(url, function (data) {}, "json"); 
    return false;
});




相关问题
selected text in iframe

How to get a selected text inside a iframe. I my page i m having a iframe which is editable true. So how can i get the selected text in that iframe.

How to fire event handlers on the link using javascript

I would like to click a link in my page using javascript. I would like to Fire event handlers on the link without navigating. How can this be done? This has to work both in firefox and Internet ...

How to Add script codes before the </body> tag ASP.NET

Heres the problem, In Masterpage, the google analytics code were pasted before the end of body tag. In ASPX page, I need to generate a script (google addItem tracker) using codebehind ClientScript ...

Clipboard access using Javascript - sans Flash?

Is there a reliable way to access the client machine s clipboard using Javascript? I continue to run into permissions issues when attempting to do this. How does Google Docs do this? Do they use ...

javascript debugging question

I have a large javascript which I didn t write but I need to use it and I m slowely going trough it trying to figure out what does it do and how, I m using alert to print out what it does but now I ...

Parsing date like twitter

I ve made a little forum and I want parse the date on newest posts like twitter, you know "posted 40 minutes ago ","posted 1 hour ago"... What s the best way ? Thanx.

热门标签