【问题标题】:Apply Ajax.ActionLink to a DIV using values from Model使用模型中的值将 Ajax.ActionLink 应用于 DIV
【发布时间】:2017-02-08 17:14:20
【问题描述】:

已经有一些类似的问题,但它们不包括使用模型中的值作为参数发送给控制器。

Make DIV containing AJAX ActionLink clickable

Div as Ajax.ActionLink

在 Razor 视图中考虑以下代码:

@foreach (var item in Model)
{
    <div class="itemDisplay">
        <img src="~/Images/@item.DisplayImage" />
        @Ajax.ActionLink($"Item {item.Id}", "_ItemDisplay", new { id = item.Id }, new AjaxOptions { UpdateTargetId = "itemDisplay", LoadingElementId = "ajax-loader", InsertionMode = InsertionMode.Replace, HttpMethod = "GET" }, null)
    </div>
}

我想要实现的是将ActionLink 应用于整个DIV

应用任何 JavaScript 解决方案时的问题是,我遇到了无法在 Razor 代码中使用 JavaScript 变量的问题(因为一个是客户端,另一个是服务器端)。

例如:

function updateItemDisplay(itemId) {
    $('#itemDisplay')
        .click(function () {
            $.ajax({
                url: '@Url.Action("_ItemDisplay", new { id = *cannot use a JS variable here!* })',
                type: "GET",
                success: function (result) {
                    $('#itemDisplay').html(result);
                }
            });
        });
};

所以我的问题是,使用ASP.Net MVC,我如何从 DIV 标签进行 AJAX 调用并将相关 ID 传递给控制器​​?

【问题讨论】:

  • 排序答案是否定的。 Ajax.ActionLink() 是一种生成 &lt;a&gt; 标记的方法。但是,当您可以使用$.ajax() 方法时,您为什么要使用Ajax.ActionLink()(它现在实际上已经过时了——它不受asp.net-core-mvc 团队的支持),它给您更多的灵活性。
  • 但不清楚您想在这里做什么-第一个 sn-p 中的代码使用Ajax.ActionLink() 生成基于item.Id 的url,这是一个服务器端值-没有javascript该代码中使用的变量。如果您确实想在 $.ajax() 方法中使用 javascript 变量,那么它只是 var url = '@Url.Action("_ItemDisplay")' + '/' + yourVariable;(假设您使用默认路由),或 var url = '@Url.Action("_ItemDisplay")' + '?id=' + yourVariable;
  • @Stephen 谢谢,我没有考虑以您描述的方式使用 Url.Action。这完美地解决了我的问题。如果您想将其输入到我会接受的答案中。
  • 针对关闭标志稍微编辑了问题。
  • 仍然不清楚你的 javascrpt 变量来自哪里

标签: javascript c# ajax asp.net-mvc razor


【解决方案1】:

解决方案只是通过将变量连接到Url.Action生成的字符串来构建URL:

'@Url.Action("_ItemDisplay")' + '/' + myVar

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-11
    • 2011-03-19
    • 2012-05-10
    • 2015-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-19
    相关资源
    最近更新 更多