- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当提交模态表单并成功关闭时,数据会更新到我的数据库表中,但我需要的是在没有页面刷新的情况下,数据应该在表的单元格中更新。
我是 JQuery 的新手,如果有人能帮我解决这个问题,我将不胜感激。
这是我放在部分 View 末尾的脚本:
function btndbsave(obj) {
var ele = $(obj);
var id = ele.attr("data-model-id");
var itemlist = [];
var name = $("[name = 'NameTxtID']").val();
var phone = $("[name = 'PhoneTxtID']").val();
var email = $("[name ='EmailTxtID']").val();
var AjaxVM = { Id: id, Name: name, Phone: phone, Email: email };
itemlist.push(AjaxVM);
console.log(itemlist)
debugger;
$.ajax({
url: '/Home/Edit', //
dataType: "json",
data: JSON.stringify({ AjaxVM }),
type: "POST",
contentType: "application/json; charset=utf-8",
success: function () {
alert("success");
$('#newmodal').modal('hide');
$('#tbDetails>tbody>td').find("tr").html(AjaxVM);
//$('#tbDetails').find("tbody>tr").append(itemlist);
},
error: function (xhr) {
alert("error");
}
});
};
部分 View 作为模态:
<div class="modal-header">
<h5 class="modal-title">Edit Record</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<div class="form-horizontal">
<div class="form-group">
@Html.LabelFor(x => x.Name, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(x => x.Name, "NameTxt", "NameTxtID", new { htmlAttributes = new { @class = "form-control col-md-6", @name = "Name[]" } })
</div>
</div>
<div class="form-group">
@Html.LabelFor(x => x.Phone, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(x => x.Phone, "PhoneTxt", "PhoneTxtID", new { htmlAttributes = new { @class = "form-control col-md-6", @name = "Phone[]" } })
</div>
</div>
<div class="form-group">
@Html.LabelFor(x => x.Email, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(x => x.Email, "EmailTxt", "EmailTxtID", new { htmlAttributes = new { @class = "form-control col-md-6", @name = "Email[]" } })
</div>
</div>
</div>
</div>
<div class="modal-footer">
<input type="button" class="btn btn-primary btnSave" data-model-id="@Model.Id" onclick="btndbsave(this)" value="Save changes">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
</div>
这是View的表格:
<table id="tbDetails" class="table table-bordered table-striped table-hover">
<thead>
<tr>
<td>Id</td>
<td>Name</td>
<td>Phone</td>
<td>Email</td>
<td>Options</td>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td width="100" class="idField">@item.Id</td>
<td>@item.Name</td>
<td>@item.Phone</td>
<td>@item.Email</td>
<td>
<a class="delete" data-model-id="@item.Id" onclick="Delete(this)"><img src="/UserImages/delete.png" /></a>
<a class="edit-record" data-model-id="@item.Id" onclick="Edit(this)" ><img src="/UserImages/pencil.png" /></a>
</td>
</tr>
}
</tbody>
</table>
这是 Controller :
[HttpPost]
public ActionResult Edit(Models.AjaxVM ajaxVM)
{
using (var db = new PracticeEntities())
{
var checkforid = db.AjaxTable.Where(x => x.Id == ajaxVM.Id).FirstOrDefault();
if (checkforid != null)
{
checkforid.Name = ajaxVM.Name;
checkforid.Email = ajaxVM.Email;
checkforid.Phone = ajaxVM.Phone;
db.SaveChanges();
}
else
{
ModelState.AddModelError("error", "Record has not been Updated");
}
return Json(ajaxVM);
}
}
在单独的 JS 文件中编辑方法:
function Edit(obj) {
debugger;
var ele = $(obj);
var url = "/Home/Edit"; // the url to the controller
var id = ele.attr('data-model-id'); // the id that's given to each button in the list
$.get(url + '/' + id, function (data) {
$('#newmodal').find(".modal-content").html(data);
$('#newmodal').modal('show');
});
};
最佳答案
首先,您对 EditorFor()
的使用没有意义,用法应该只是
@Html.EditorFor(x => x.Name, "new { htmlAttributes = new { @class = "form-control col-md-6" } })
接下来你保存数据的脚本应该是
function btndbsave(obj) {
var ele = $(obj);
var id = ele.attr("data-model-id");
var name = $("#Name]").val();
var phone = $("#Phone").val();
var email = $("#Email").val();
var AjaxVM = { Id: id, Name: name, Phone: phone, Email: email };
$.ajax({
url: '@Url.Action("Edit", "Home")', // don't hard code your url's
dataType: "json",
data: AjaxVM,
type: "POST",
success: function (response) {
.... // see notes below
},
error: function (xhr) {
alert("error");
}
});
};
但是请注意,您的模态应包含 <form>
和 @Html.ValidationMessageFor()
为您提供客户端验证以及提交按钮的代码,以便您的脚本成为
$('form').submit(function(e) { // or give the form an id attribute and use that
e.preventDefault();
... // make ajax call
});
接下来,您的 Controller 方法只需要返回一个指示成功或其他情况的值(以及任何适用的错误消息),例如
return Json(new { success = true }); // if saved
return Json(new { success = false, message = "...." }); if not saved
注意添加一个ModelStateError
没有意义,因为您没有返回 View
然后在 ajax 回调中,您更新 <td>
元素成功(否则显示错误)。为此,请包含一个全局 javascript 变量来存储当前行
并将打开模式的链接更改为
<a class="edit-record" data-model-id="@item.Id" href="#" ><img src="/UserImages/pencil.png" /></a>
和脚本
var currentrow;
$('.edit-record').click(function() {
currentrow = $(this).closest('tr'); // assign the current row
... // load and display the modal
});
$.ajax({
....
success: function (response) {
if (response.success) {
// Update the current row
var cells = currentrow.find('td');
cells.eq(1).text(name);
cells.eq(2).text(phone);
cells.eq(3).text(email);
} else {
... // oops - display the message in response.message?
}
}
....
}
另请注意,无需调用 ajax 来加载模式,因为您已经在 View 中拥有所有数据。相反,包括用于编辑 AjaxVM
的 html在初始 View 中,例如,使用
@Html.Partial(""_Edit", new AjaxVM())
然后在显示模式时更新输入的值
$('.edit-record').click(function() {
currentrow = $(this).closest('tr');
var cells = currentrow.find('td');
$('#Name').val(cells.eq(1).text());
$('#Phone').val(cells.eq(2).text());
$('#Email').val(cells.eq(3).text());
$('#newmodal').modal('show');
});
关于c# - 在 Ajax-Jquery 成功时,如何在 ASP.NET MVC5 C# 中提交模态表单后替换或附加表的单元格值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52701365/
#include using namespace std; class C{ private: int value; public: C(){ value = 0;
这个问题已经有答案了: What is the difference between char a[] = ?string?; and char *p = ?string?;? (8 个回答) 已关闭
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 7 年前。 此帖子已于 8 个月
除了调试之外,是否有任何针对 c、c++ 或 c# 的测试工具,其工作原理类似于将独立函数复制粘贴到某个文本框,然后在其他文本框中输入参数? 最佳答案 也许您会考虑单元测试。我推荐你谷歌测试和谷歌模拟
我想在第二台显示器中移动一个窗口 (HWND)。问题是我尝试了很多方法,例如将分辨率加倍或输入负值,但它永远无法将窗口放在我的第二台显示器上。 关于如何在 C/C++/c# 中执行此操作的任何线索 最
我正在寻找 C/C++/C## 中不同类型 DES 的现有实现。我的运行平台是Windows XP/Vista/7。 我正在尝试编写一个 C# 程序,它将使用 DES 算法进行加密和解密。我需要一些实
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
有没有办法强制将另一个 窗口置于顶部? 不是应用程序的窗口,而是另一个已经在系统上运行的窗口。 (Windows, C/C++/C#) 最佳答案 SetWindowPos(that_window_ha
假设您可以在 C/C++ 或 Csharp 之间做出选择,并且您打算在 Windows 和 Linux 服务器上运行同一服务器的多个实例,那么构建套接字服务器应用程序的最明智选择是什么? 最佳答案 如
你们能告诉我它们之间的区别吗? 顺便问一下,有什么叫C++库或C库的吗? 最佳答案 C++ 标准库 和 C 标准库 是 C++ 和 C 标准定义的库,提供给 C++ 和 C 程序使用。那是那些词的共同
下面的测试代码,我将输出信息放在注释中。我使用的是 gcc 4.8.5 和 Centos 7.2。 #include #include class C { public:
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我的客户将使用名为 annoucement 的结构/类与客户通信。我想我会用 C++ 编写服务器。会有很多不同的类继承annoucement。我的问题是通过网络将这些类发送给客户端 我想也许我应该使用
我在 C# 中有以下函数: public Matrix ConcatDescriptors(IList> descriptors) { int cols = descriptors[0].Co
我有一个项目要编写一个函数来对某些数据执行某些操作。我可以用 C/C++ 编写代码,但我不想与雇主共享该函数的代码。相反,我只想让他有权在他自己的代码中调用该函数。是否可以?我想到了这两种方法 - 在
我使用的是编写糟糕的第 3 方 (C/C++) Api。我从托管代码(C++/CLI)中使用它。有时会出现“访问冲突错误”。这使整个应用程序崩溃。我知道我无法处理这些错误[如果指针访问非法内存位置等,
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 7 年前。
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,因为
我有一些 C 代码,将使用 P/Invoke 从 C# 调用。我正在尝试为这个 C 函数定义一个 C# 等效项。 SomeData* DoSomething(); struct SomeData {
这个问题已经有答案了: Why are these constructs using pre and post-increment undefined behavior? (14 个回答) 已关闭 6
我是一名优秀的程序员,十分优秀!