- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
最终编辑:
按照 Darin Dimitrov 的回答,我发现问题最终是 AJAX 调用 Controller 的方法 UpdateForm()
返回一个空字符串。这是我前段时间遇到不同问题后发现有必要进行的修改。传递空字符串会导致 Firefox 的解析器阻塞(而 Chrome 和 IE 显然不在乎)所以我用空 div
替换了空字符串。
编辑:
感谢 Darin Dimitrov 在下面的建议,我发现我遇到麻烦的原因是每当提交相关表单时都会抛出错误。
错误显示“无法在层次结构中的指定点插入节点”。每次提交表单时都会抛出此问题。我在 POST 数据中注意到它似乎认为这是一个 XMLHttpRequest。这是原因吗(有问题的 AJAX 请求只是返回 HTML)?这是来自 Firebug 的 POST 数据:
此错误显示为“XML 解析错误 -- 未找到元素”。
仅供引用 - 返回的 HTML 始终为空字符串...
我有一个在 IIS7 上运行的 MVC3 应用程序。在我的一个观点中,我有一个使用 Microsoft HTML 辅助函数构建的表单:
@using (Ajax.BeginForm("UpdateForm", new AjaxOptions { UpdateTargetId = "TargetDiv", InsertionMode = InsertionMode.InsertAfter, OnSuccess = "ClearTextBox" }))
{
@Html.TextArea("txtInput", new { id = "txtInput", cols = "20", rows = "5", wrap = "virtual" })
<input id="send" class="button" type="submit" value="Send"/><br />
}
当 Controller 提供此 View 时,这会生成以下 HTML:
<form action="/RootName/ControllerName/UpdateForm" data-ajax="true" data-ajax-mode="after" data-ajax-success="ClearTextBox" data-ajax-update="#TargetDiv" id="form0" method="post">
<textarea cols="20" id="txtInput" name="txtInput" rows="5" wrap="virtual"></textarea>
<input id="send" class="button" type="submit" value="Send"><br>
</form>
我基本上想在这里做的是将 TextArea
中名为 txtInput
的文本附加到 Div
的末尾> 每当点击上面的 Send
按钮时调用 TargetDiv
并在附加完成后从 txtInput
中清除文本通过 ClearTextBox()
方法 (Javascript)。 append 总是适用于所有浏览器;当我在 Internet Explorer 或 Chrome 中运行时,文本清除工作正常。但是,Firefox 似乎并不想调用 ClearTextBox()
方法。
Firefox 是否与表单签名中的这个data-ajax-success
选项不兼容?
我尝试过的事情
我找到了这个人: Ajax.BeginForm doesn't call onSuccess
解决方案是添加这个脚本:
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
我正在调用这个脚本:
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
...但为了以防万一,我试着换掉它。没有快乐。
C# 聊天室中的一些人要求我尝试更改方法调用以包含括号,以便 HTML 如下所示:
<form action="/WebChat/TMWC/UpdateForm" data-ajax="true" data-ajax-mode="after" data-ajax-success="ClearTextBox()" data-ajax-update="#chatText" id="form0" method="post">
<textarea cols="20" id="txtInput" name="txtInput" rows="5" wrap="virtual"></textarea>
<input id="send" class="button" type="submit" value="Send"><br>
</form>
但这并没有帮助。
C# Chat 中的人们还建议我用警告替换 Javascript 调用 - 如下所示:
<form action="/WebChat/TMWC/UpdateForm" data-ajax="true" data-ajax-mode="after" data-ajax-success="alert('yo!')" data-ajax-update="#chatText" id="form0" method="post">
<textarea cols="20" id="txtInput" name="txtInput" rows="5" wrap="virtual"></textarea>
<input id="send" class="button" type="submit" value="Send"><br>
</form>
Chrome 会弹出消息框,而 Firefox 不会!
最佳答案
新创建的 ASP.NET MVC 3 应用程序中的状态没有重现。
Controller :
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult UpdateForm()
{
return Content(DateTime.Now.ToLongTimeString());
}
}
View (~/Views/Home/Index.cshtml
):
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
<script type="text/javascript">
function ClearTextBox() {
$('textarea').val('');
}
</script>
<form action="/Home/UpdateForm" data-ajax="true" data-ajax-mode="after" data-ajax-success="ClearTextBox" data-ajax-update="#TargetDiv" id="form0" method="post">
<textarea cols="20" id="txtInput" name="txtInput" rows="5" wrap="virtual"></textarea>
<input id="send" class="button" type="submit" value="Send"><br>
</form>
<div id="TargetDiv"></div>
在 Chrome、FF 和 IE 中完美运行。
您可能还想确保 Content-Type 响应 HTTP header 与您发送的实际响应相匹配。例如,我看到很多人在响应正文中发送带有一些无效 JSON 的 application/json
响应 header ,这会导致更敏感的解析器阻塞。
关于c# - MVC3 Ajax.BeginForm OnSuccess 无法在 Firefox 中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11162038/
我有一个呈现两个局部 View 的主视图。主视图包含表单中的两个部分 View 。每个部分 View 还包含表单。所有 3 个 View 共享相同的 View 模型。我想要做的是用主视图封装来自所有
我有一个用于编辑内容的 View ,比如订单。订单有可以任意添加的行项目。所以一个主视图和嵌套的局部 View 。 每个部分都应该有一个 ajax 表单,用于调整每个订单项或其他内容的数量。 因此:
以下有效,但如何将其转换为 Ajax 调用? @using (Html.BeginForm("Login", "Account", new { ReturnUrl = ViewBag.ReturnU
令人惊讶的是,在我检查了所有帖子之后,仍然没有明确的解释(在我看来)在什么情况下应该使用主题数据...... 我知道对于 html.beginform,它将执行回发,将数据发布到 Controller
MVC3中的Html.BeginForm()和Ajax.Beginform()有什么区别。我只是想知道在什么情况下可以使用 Html.BeginForm() 以及在什么情况下可以使用 Ajax.Beg
当我将表单的一部分放在局部 View 中时,除局部 View 中的表单元素外,所有表单部分都将获得无障碍语法。 我发现如何“应用”无障碍语法的唯一方法是在局部 View 中启动另一种形式。 看法: @
我在 ASP.NET MVC 5 中工作。我在使用 Ajax.BeginForm 提交表单期间显示加载程序: @using (Ajax.BeginForm("Filter", "Log", new A
我正在使用TinyMCE editor在我网站的管理面板上,所以我用 [AllowHtml] 装饰模型属性(tinymce 的目标),并在 View 中使用 Html.BeginForm() 。当我提
我对 Ajax.BeginForm 有很长时间的问题,现在是通过互联网和 SO 进行搜索,但大多数解决方案包括 jquery.unobtrusive-ajax.min或编辑 web.config允许
目的 我有一个简单的表格,列出了名称(在部分 View 中),其上方有一个包含这些名称的下拉列表。目的是根据下拉列表中选择的名称过滤表。一旦下拉列表中的选定值发生变化,过滤就应该发生,并且应该只再次渲
我有一个 Ajax.BeginForm 调用,它应该返回一个局部 View ,但将页面重新路由到 Action。关于什么是错的任何想法? 这是我要在其上呈现部分 View 的主页上的代码:
我创建了一个名为 B2b 的区域在我的 ASP.NET MVC 应用程序中,我还创建了一个名为 Shopify 的子文件夹在该区域下: 为了注册Shopify子文件夹,我创建了一个 CustomVie
我有这个代码: @using (Html.BeginForm()) { @Html.ValidationSummary(true, "Login
我想有条件地使用 Html.BeginForm。代码中有2个字段如下 @using (Html.BeginForm("Form1Action", "Form1", FormMethod.Post, n
在VS2008中使用MVC项目模板(开箱即用),我注意到以下几点: 这是指定Register.aspx表单的方式。 选择“注册”按钮而不提供任何帐户信息将显示此信息。帐户创建失败。请更正错误,然后重
这个问题已经有答案了: Update div using ajax.beginform inside asp mvc view (1 个回答) 已关闭 7 年前。 我正在尝试执行 AJax 表单发布,
我在尝试使用 ASP.NET MVC3 的 Ajax.BeginForm 方法时遇到了一个奇怪的问题。表单通过正确的操作属性在页面上正确呈现。但是,当提交表单时,“OnFailure”事件返回“Not
有没有办法让 AjaxBeginForms 忽略某些指定的按钮? 例如我的代码是: @using (Ajax.BeginForm("CreatePost", "Accounts", new AjaxO
我读到this我想知道 Ajax.BeginForm 是否已过时 谢谢 最佳答案 嗯,它并没有过时,但达林在你所链接的问题中强烈反对使用它。 就我个人而言,MVC 2 的客户端解决方案在某些方面感觉像
我正在开发一个 ASP.NET MVC 3 应用程序。我想使用 AJAX.BeginForm。有哪些可以详细研究的资源/教程链接? 最佳答案 试试 Unobtrusive Ajax helpers i
我是一名优秀的程序员,十分优秀!