javascript - 用于 javascript 的 Url.Content

标签 javascript asp.net-mvc asp.net-mvc-3

我目前使用这种方法来获取正确的相对 URI(与部署情况无关)。 Razor 代码(asp.net mvc 3):

@section JavaScript
{  
    <script type="text/javascript">
        var _getUrl =  "@Url.Content("~/bla/di/bla")";
    </script>
}

单独的js文件:

$.ajax({
    url: _getUrl,

您认为有更好的方法吗?

最佳答案

就我个人而言,我更喜欢使用 HTML5 data-* 属性或将 URL 包含在我不引人注目的 AJAX 化的某些 DOM 元素中。

问题是你永远不会像那样编写 $.ajax 调用。你编写它们来对应一些 DOM 事件。例如点击 anchor 。在这种情况下,它很简单,您只需使用 HTML 帮助器来生成此 anchor :

@Html.ActionLink("click me", "someAction", "somecontroller", new { id = "123" }, new { @class = "link" })

然后:

$('.link').click(function() {
    $.ajax({
        url: this.href,
        type: 'GET',
        success: function(result) {
            ...
        }

    });
    return false;
});

或者您可能正在对表单进行 AJAX 化:

@using (Html.BeginForm("SomeAction", "SomeController", FormMethod.Post, new { id = "myForm" }))
{
    ...
}

然后:

$('#myForm').submit(function() {
    $.ajax({
        url: this.action,
        type: this.method,
        data: $(this).serialize(),
        success: function(result) {
            ...
        }
    });
    return false;
});

另一个例子是在相应的 DOM 元素上没有合适的 url 时使用 HTML5 data-* 属性。假设您想要在下拉列表的选择发生变化时使用 AJAX 调用 Controller 操作。以级联 ddls 为例。

您的下拉菜单可能如下所示:

@Html.DropDownListFor(x => x.SelectedValue, Model.Values, new { id = "myDdl", data_url = Url.Action("SomeAction") })

然后:

$('#myDdl').change(function() {
    var url = $(this).data('url');
    var selectedValue =  $(this).val();
    $.getJSON(url, { id: selectedValue }, function(result) {
        ...
    });
});

如您所见,您实际上并不需要在 View 中声明的这个 _getUrl 全局 javascript 变量。

关于javascript - 用于 javascript 的 Url.Content,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15834188/

相关文章:

javascript - 添加空格以填充数组长度

javascript - 通过 Ratchet v2.0.2 加载外部 map 脚本

css - Asp.Net 标识 : Edit default layout

asp.net-mvc - 使用 actionlink 将文本框的值从 View 传递到 Controller

asp.net - 有没有办法确定 ASP.Net MVC Bundle 是否在之前呈现?

c# - 在 web.config 中存储一系列值 - 使用什么数据结构

javascript - 无法让 jQuery CDN 为 WordPress 插件工作

javascript - 控制 Bootstrap-Lightbox 画廊中的图像高度

asp.net-mvc-3 - ASP.NET MVC3 从 https 重定向到 http

jquery-plugins - jQuery 文件上传插件要求我下载文件,有什么问题吗?