C# 需要帮助使用jquery完成异步表单发布和屏幕更新吗
我基本上是一个jquery新手……我想我已经基本上成功了,如果我能澄清任何事情,请告诉我 我有一个屏幕显示一个列表。让我们称他们为附属公司。要创建一个新的分支机构,需要使用模态风格的弹出对话框 单击对话框“创建”按钮时,必须保存表单数据(创建新的附属机构),对话框消失,附属机构列表更新而不重新加载页面 底部的jquery文件显示了我现在是如何尝试的:尝试检测单击“确认”按钮,使用数据目标属性获取要提交的表单,并使用表单的目标属性了解要更新的容器 正在发生的是:什么都没有。“取消”按钮起作用,“创建”按钮完全不起作用 还请注意,“创建”按钮将作为表单的提交按钮,它不位于C# 需要帮助使用jquery完成异步表单发布和屏幕更新吗,c#,jquery,asp.net-mvc-4,asynchronous,C#,Jquery,Asp.net Mvc 4,Asynchronous,我基本上是一个jquery新手……我想我已经基本上成功了,如果我能澄清任何事情,请告诉我 我有一个屏幕显示一个列表。让我们称他们为附属公司。要创建一个新的分支机构,需要使用模态风格的弹出对话框 单击对话框“创建”按钮时,必须保存表单数据(创建新的附属机构),对话框消失,附属机构列表更新而不重新加载页面 底部的jquery文件显示了我现在是如何尝试的:尝试检测单击“确认”按钮,使用数据目标属性获取要提交的表单,并使用表单的目标属性了解要更新的容器 正在发生的是:什么都没有。“取消”按钮起作用,“创
标记内
我很确定我做的模态是错误的,但我们暂时忽略这一点,把重点放在异步post和列表更新上。我在下面加入了我的相关代码来支持我的帖子
--附属部分
@model IPagedList<Acme.Business.DomainModel.Affiliates.Affiliate>
<div class="items-list" id="affiliate-list-view">
@foreach (var item in Model)
{
<a href="@Url.Action("AffiliateDetails", "Vendor", new { id = item.AffiliateId })">
//basic spans and razor display list in here..nothing notable
</a>
}
</div>
用于创建新分支机构的模态风格对话(我将只包括我认为相关的行):
_Modal.AffiliateCreate.Partial
<form id="affiliate-create-form" class="form" method="post" action="@Url.Action("AffiliateCreate")" data-acme-ajax="true" data-acme-target="#affiliate-list-view">
// multiple input elements
</form>
<div class="modal-footer">
<button name="close_modal"><span>Cancel</span></button>
<button name="confirm" data-acme-target="#affiliate-create-form"><span>Create</span></button>
</div>
以及.js文件的相关部分:
$("button[name='confirm']").on("click", function() {
var $form = $(this).attr("data-acme-target");
var options = {
url: $form.attr("action"),
type: $form.attr("type"),
data: $form.serialize()
};
$.ajax(options).done(function (data) {
var $target = $($form.attr("data-acme-target"));
var $newHtml = $(data);
$target.replaceWith(data);
$newHtml.effect("highlight");
});
$(".modal_overlay").css("opacity", "0");
$(".modal_container").css("display", "none");
return false;
});
$("button[name='close_modal']").on("click", function(event) {
$(".modal_overlay").css("opacity", "0");
$(".modal_container").css("display", "none");
return false;
});
var$form=$(this.attr(“数据顶点目标”)
正在获取按钮的名为'data-acme-target'
的属性,而不是它所关联的表单。因此,当您使用$form.attr('action')
时,您不会得到任何回报
由于data acme target是要提交表单的另一个控件的ID,请使用
$($(this).attr(“data acme target”)
获取它。$form=按钮的目标,即表单的id…因此,$form.attr('action')应该是表单的操作。否?$form是按钮的目标id,而不是控件本身。在url上放置一个断点:$form.attr(“action”),您将看到$form是“#affiliate create form”,字符串,而不是控件。
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult AffiliateCreate(Affiliate affiliate)
{
if (!ModelState.IsValid) return View(affiliate);
db.Affiliates.Add(affiliate);
db.SaveChanges();
return RedirectToAction("AffiliateList");
}
$("button[name='confirm']").on("click", function() {
var $form = $(this).attr("data-acme-target");
var options = {
url: $form.attr("action"),
type: $form.attr("type"),
data: $form.serialize()
};
$.ajax(options).done(function (data) {
var $target = $($form.attr("data-acme-target"));
var $newHtml = $(data);
$target.replaceWith(data);
$newHtml.effect("highlight");
});
$(".modal_overlay").css("opacity", "0");
$(".modal_container").css("display", "none");
return false;
});
$("button[name='close_modal']").on("click", function(event) {
$(".modal_overlay").css("opacity", "0");
$(".modal_container").css("display", "none");
return false;
});