【问题标题】:Javascript url action in razor view剃刀视图中的 Javascript url 操作
【发布时间】:2012-07-22 11:44:06
【问题描述】:

我有一个 javascript 方法 onRowSelected wchich 获取 rowid。如何使用HttpGet在控制器的某些操作中传递rowid?

function onRowSelected(rowid, status) {
        alert('This row has id: ' + rowid);
        //url: @Action.Url("Action","Controller")
        //post:"GET"
        // Something like this?
    }

【问题讨论】:

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


    【解决方案1】:

    如果您的控制器操作需要一个 id 查询字符串参数:

    var url = '@Url.Action("Action", "Controller")?id=' + rowid;
    

    或者如果您想将其作为路线的一部分传递,您可以使用替换:

    var url = '@Url.Action("Action", "Controller", new { id = "_id_" })'
        .replace('_id_', rowid);
    

    如果您要发送 AJAX 请求,另一种可能性是将其作为 POST 正文的一部分传递:

    $.ajax({
        url: '@Url.Action("Action", "Controller")',
        type: 'POST',
        data: { id: rowid },
        success: function(result) {
    
        }
    });
    

    如果您使用 GET,则作为查询字符串参数:

    $.ajax({
        url: '@Url.Action("Action", "Controller")',
        type: 'GET',
        data: { id: rowid },
        success: function(result) {
    
        }
    });
    

    所有这些都假设您的控制器操作当然需要一个 id 参数:

    public ActionResult Action(string id)
    {
        ...
    }
    

    因此,您可以看到许多实现相同目标的方法。

    【讨论】:

    • 我想知道为什么第一个答案不起作用。 ajax 答案效果很好。
    • 即使在 firebug 中也不会触发任何事件。 URL 不会改变。
    • 在您的 HTML 中生成的 URL 是什么?右键单击浏览器并查看源代码。另外,如果您不发送 AJAX 请求,接下来您将如何处理 url 变量?您希望浏览器如何离开当前页面?你写了什么代码?我无法读懂你的想法。
    • 我厌倦了使用 $.get(url, function (result)){ } 。我发现了我的错误,我没有创建结果持有者很愚蠢。现在它起作用了。谢谢。
    • 我真的很想知道为什么上面的任何选项都会起作用? @Url.Action("Action", "Controller") 是剃刀语法。 JavaScript(即onRowSelected 事件处理程序)将在对@Url.Action 有任何了解的浏览器中执行。我错过了什么吗?
    【解决方案2】:

    Darin 的方法效果很好。

    我建议 Razor 视图使用 jsp 中的 @Html.actionlink 使用模型值的另一种方法

    var URLvalue='@Html.ActionLink("UserString", "action", new { routeValueName1 = "__value1__", routeValueName2="__value2__" }, htmlAttributes: new { @class = "btn btn-default", @role = "button" })'
         .replace('__value1__', Model.somevalue).replace('__value2__',  Model.somevalue);
    

    你可以在 jsp 或 jquery 的任何地方使用 URLvalue。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-30
      • 1970-01-01
      • 1970-01-01
      • 2022-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多