我想知道是否有使用MVC6中的jQuery AJAX提交表单的特定方法,仍然使用ASP.NET
MVC的自动绑定功能。我相信在其他版本的MVC中,您可以使用jquery.unobtrusive-ajax并简单地使用
@using (Ajax.BeginForm("SaveData", new AjaxOptions(){}
由于MVC6进行了一些更改,所以我想知道新的推荐方法是什么,除了在提交表单时向服务器进行常规AJAX发布之外。这意味着我将手动获取每个输入字段的值,将它们转换为JSON并将其发送到控制器,以便所有内容都将绑定到ViewModel。
如果我将以下JavaScript用于AJAX,那么任何AJAX表单设置都重要吗?
$('form').submit(function () {
$.ajax({
type: "POST",
url: "/Products/Create/",
data: JSON.stringify(data),
contentType: "application/json; charset=utf-8",
dataType: "json"
});
});
Ajax的工作方式相同,但使用新的MVC 6标记帮助器(而不是@Ajax帮助器)(不要忘记引用“ jquery”和“ jquery.unobtrusive-
ajax”脚本)。
jQuery Unobtrusive Ajax存在于Asp.Net GitHub存储库中,可以被Bower提取。
使用新的MVC TagHelpers,您只需声明如下形式:
<form asp-controller="Home" asp-action="SaveForm" data-ajax="true" data-ajax-method="POST">
...
</form>
要在以前的MVC版本上使用Ajax Helper上存在的AjaxOptions,只需添加这些属性即可像这样进行form标签:
<form asp-controller="Home" asp-action="SaveForm" data-ajax="true" data-ajax-method="POST" data-ajax-mode="replace" data-ajax-update="#content">
...
</form>
<div id="content"></div>
您可以在表单中使用的HTML属性(以前称为AjaxOptions)是以下属性(原始来源):
+------------------------+-----------------------------+
| AjaxOptions | HTML attribute |
+------------------------+-----------------------------+
| Confirm | data-ajax-confirm |
| HttpMethod | data-ajax-method |
| InsertionMode | data-ajax-mode |
| LoadingElementDuration | data-ajax-loading-duration |
| LoadingElementId | data-ajax-loading |
| OnBegin | data-ajax-begin |
| OnComplete | data-ajax-complete |
| OnFailure | data-ajax-failure |
| OnSuccess | data-ajax-success |
| UpdateTargetId | data-ajax-update |
| Url | data-ajax-url |
+------------------------+-----------------------------+
另一个重大变化是您如何在服务器端检查请求是否确实是AJAX请求 。在以前的版本中,我们只是使用Request.IsAjaxRequest()
。
在MVC6上,您必须创建一个简单的扩展以添加与先前MVC版本(原始源)中存在的选项相同的选项:
/// <summary>
/// Determines whether the specified HTTP request is an AJAX request.
/// </summary>
///
/// <returns>
/// true if the specified HTTP request is an AJAX request; otherwise, false.
/// </returns>
/// <param name="request">The HTTP request.</param><exception cref="T:System.ArgumentNullException">The <paramref name="request"/> parameter is null (Nothing in Visual Basic).</exception>
public static bool IsAjaxRequest(this HttpRequest request)
{
if (request == null)
throw new ArgumentNullException("request");
if (request.Headers != null)
return request.Headers["X-Requested-With"] == "XMLHttpRequest";
return false;
}
问题内容: 我正在使用scrapy框架来抓取网站,并且无法单击javascript链接来打开另一个页面。 我可以将页面上的代码标识为: 谁能建议我如何在Scaroy中执行该javascript并通过我获得另一页,我可以从该页中获取数据。 提前致谢 问题答案: 检出以下有关如何将selenium一起使用的摘要。爬网速度会变慢,因为你不仅要下载html,还可以完全访问DOM。 注意:由于先前提供的链接
问题内容: 我正在尝试将一些数据发送到razor页面方法,但是问题在于方法中它总是以as的形式出现。 这是代码: 剃刀页面: 阿贾克斯: 问题答案: 在使用ASP.NET Core 2.0 Razor Pages时,实际上是保留名称。您遇到的问题实际上非常简单,但非常细微: 当它看到查询字符串参数时,ASP.NET Core 2.0 Razor Pages框架会将其解释为当前Razor Page的
问题内容: 我正在尝试使用机械化提交表单,但遇到了错误(TypeError:ListControl,必须设置顺序)。在谷歌搜索了一段时间并尝试了几种不同的解决方案后,我无法解决该问题。我正在尝试提交所有字段。 通过机械化获取的表单数据(对于br.forms()打印中的f:f) 我当前的代码 请您协助并检查我是否为表单选项使用了正确的语法。谢谢 问题答案: 栏位会要求您提供整数清单,但您只提供一个整
问题内容: 我正在尝试在wordpress中获取ajax请求的结果,但是在javascript的警报框中却获得了“ 0”的结果,因此该表单如下所示: javascript看起来像这样: 和PHP: 有谁知道上面的代码是否正确,我也尝试过$ _REQUEST [‘name’],它不起作用。 非常感谢 问题答案: 尝试这样的操作,您没有在PHP 函数中添加期望的参数,因此必须将其添加到jQuery a
问题内容: 我正在尝试使用jquery将值提交到数据库。我是ajax的新手,但是我必须使用ajax。 到目前为止,这是我已经完成的PHP代码 我的html代码是 这是我使用jQuery的ajax 我不知道我在做什么错。任何帮助将不胜感激 问题答案: 与其干扰表单的Submit事件,不如点击事件。要对现有设置进行最小的更改,只需将点击处理程序添加到表单提交按钮。处理程序中的第一件事是调用e.prev
陀螺仪 音效 扬声器