【发布时间】:2023-03-07 16:38:02
【问题描述】:
我正在用 ASP.NET MVC 2.0 编写一个非常简单的 Web 应用程序,它用作 Web 服务的测试接口。各个页面提供了一个用户界面来输入请求消息的参数。参数通过 Ajax 提交回控制器,该控制器返回一个部分视图,其中包含
标记中的响应 SOAP 消息(HTML 编码的 XML)...// In controller... ActionResult WebMethodTest() { return View(new WebMethodModel()); } [HttpPost] ActionResult WebMethodTest(WebMethodModel model) { model.Response = MyServiceProxy.WebMethod(model.Request); return PartialView("SoapResponse", model.Response); } // In view <% using (Ajax.BeginForm(new AjaxOptions { UpdateTargetId="Response", LoadingElementId="Loading", HttpMethod="POST", OnSuccess="prettyPrint"})) { %> <!-- various model bound controls... --> <% { %> <div id="Loading" style="text-align:center; display:none"> <img src="../../Content/ajax-loader.gif" alt="loading..." /><br /> working... </div>不幸的是,在 Ajax 调用后返回数据时,Loading div 元素没有再次隐藏,它保持可见。有趣的是,如果我删除 OnSuccess="prettyPrint",它确实会被正确隐藏。我的印象是我的 OnSuccess 脚本覆盖了默认行为,而不是另外执行。我不想丢失 prettyPrint,因为它正在为正在显示的 XML 着色...如何保持默认的加载元素行为以及我自己的 OnSuccess 钩子?
干杯!
【问题讨论】:
-
prettyPrint 是做什么的?如果您还没有这样做,我建议您从该 javascript 函数返回 true。
-
这是 google 的客户端语法高亮工具 - code.google.com/p/google-code-prettify。我知道,如果您覆盖 OnBegin 并返回 false,Ajax 调用将被取消,但 OnSuccess 会在 DOM 更新后调用...
-
它非常适合我。你能发布一些代码(成功函数)
标签: javascript asp.net-mvc ajax