【问题标题】:Asp MVC AjaxExtensions, call from controllerAsp MVC AjaxExtensions,从控制器调用
【发布时间】:2014-07-04 10:01:41
【问题描述】:

我确定这很简单,但我很难找到它

在控制器中,您可以执行以下操作:

public ActionResult MyAction()
{
  string url = Url.Action(action, controller),
  // do something with the url
}

什么是 Ajax 等价物?即,您将在 View 中调用 Ajax.ActionLink 的位置与控制器的等价物是什么?

  • 细化-

我有一个带有网格和一些输入元素的主/细节排列。您可以点击网格中的选择/删除来修改或删除该行。

网格是一个 Kendo UI 网格,视图通过以下方式呈现:

  1. 渲染输入元素的局部视图
  2. 创建一个json对象,即

    @{ var jsLines = @Html.Raw(Json.Encode(Model.Lines)); }

  3. 将剑道网格绑定到这个 json

我想从网格中点击选择并调用 Ajax 方法以使用表单详细信息更新部分视图

谢谢

【问题讨论】:

  • 顺便说一句,为什么要绑定到 json?我可以在视图中有一个 for 循环并渲染表格,然后将 Kendo 绑定到表格。这种方式让我觉得更容易
  • 如果你可以像这样绑定剑道网格(我不知道这个网格)这似乎容易多了。
  • 我必须猜测长期会发生什么,我希望能够灵活地以两种方式呈现网格以准备未来的需求,特别是超链接可能会有负载' if' 语句表示是否启用
  • 网格必须绑定到 json 对吗?那么为什么要使用局部视图来呈现 json 呢?这部分 @{ var jsLines = @Html.Raw(Json.Encode(Model.Lines)); } 应该在你的控制器中使用 return Json( ... myObjectToSerialize...);
  • 返回的不仅仅是 json。以“添加”为例,它将返回一个部分视图,其中包含现在清除的输入元素和网格的 json

标签: ajax asp.net-mvc


【解决方案1】:

您可以在剃刀视图中使用 Url.Action。类似的东西:

$.ajax({
    url: '@Url.Action("Action", "Controller")',
    ...

【讨论】:

  • 正如我在原始问题中所说,“控制器的等价物是什么?”并调用 Ajax.ActionLink
  • 也许我真的不明白你的意思。 Ajax.ActionLink 将创建一个指向特定 url 的锚点。你不能在控制器中这样做。你想从控制器重定向到另一个动作?
  • 我想在cs代码中创建一个超链接,这将被插入到json中,然后传递给一个视图,稍后我将绑定一个剑道网格。超链接将用于选择/删除
  • 这可能是使用 Url.Action 并自己插入各种标签的情况,例如data-ajax='true' data-ajax-mode='replace' data-ajax-update='{2}' 这对我来说是新的,所以还不确定
  • 您应该将您的问题更新为真正的问题。也许这不是正确的方法。据我了解,您现在想要一个操作返回包含 url 作为 html 链接的 json 消息。
【解决方案2】:

我完全不相信这是正确的方法,但有选择总是好的。

Ajax.ActionLink 似乎与 Url.Action 相同,但添加了一些属性。所以你可以使用这个:

        return string.Format("<a data-ajax='true' data-ajax-mode='replace' 
                               data-ajax-update='{2}' href=\"{0}\">{1}</a>",
            Url.Action(action, controller, routeValues),
            text, 
            "formContainerSelectSection");

更新这个:

<div id="formContainerSelectSection">
    ... stuff to be replaced via ajax
</div>

我接受,尤其是在与 NicoD 讨论之后,还有其他可能更简单的方法可以做到这一点,特别是在控制器中创建一个链接,这是 Views 的工作,但最初的问题是关于如何做这个

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-25
    • 1970-01-01
    • 2015-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多