【问题标题】:ASP.NET MVC3 AJAX POST: result are rendered in browser instead of being executedASP.NET MVC3 AJAX POST:结果在浏览器中呈现而不是被执行
【发布时间】:2011-05-07 15:59:39
【问题描述】:

想象一下,我有一个 HTML 表格,其中包含几行项目。对于每个项目,我都会生成一个“删除”按钮,如下所示:

<% using (Ajax.BeginForm("Delete", "MyController", new { item.Id }, new AjaxOptions { HttpMethod="POST" })) { %>
    <input type="submit" class="deletebutton" value="Delete" />
<% } %>

对应的动作如下:

[HttpPost]
public JavaScriptResult Delete(int id)
{
    var item = _repository.GetById(id);
    // [...] actually delete the item               
    var script = string.Format("OnItemDeleted({0},{1})", item.Id, new JavaScriptSerializer().Serialize(item.Name));
    return JavaScript(script);
}

最后,这是执行Delete后应该调用的Javascript函数:

function OnItemDeleted(id, name) {
    $('#errorlabel').text(name + " deleted successfully.");
    $('#tr_item_' + id).fadeOut();
};

我从 Steven Sanderson 的“Pro ASP.NET MVC 2 Framework”一书中得到了这个,并在我的项目中看到它曾经工作过。与此同时,我的很多代码都已更改,包括对 MVC 3 的更新,由于某种原因它不再工作了。单击删除按钮后,操作方法被正确调用,但在此之后浏览器向我显示浏览器中的 JavaScript 结果,例如:

OnItemDeleted(21,"Fancy Item 1234")

奇怪的是,我也被重定向到 Admin/MyController/Delete/{ItemId} 尽管我的 Delete 操作明确说明为 [HttpPost] 并且没有同名的 GET 操作。

您知道可能导致这种行为的原因吗?提前致谢!

【问题讨论】:

    标签: jquery ajax asp.net-mvc-3 http-post


    【解决方案1】:

    想通了:我使用的是 MVC 2 中的旧 Microsoft JavaScript 库。 Replacing those 解决了这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-30
      • 2023-03-14
      • 2021-01-24
      • 1970-01-01
      • 1970-01-01
      • 2014-03-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多