Javascript MVC中的取消按钮
我在表单中有一个面板,有3个按钮“保存”、“编辑”和“取消”。Javascript MVC中的取消按钮,javascript,jquery,asp.net-mvc,Javascript,Jquery,Asp.net Mvc,我在表单中有一个面板,有3个按钮“保存”、“编辑”和“取消”。 当用户单击edit时,面板内的标签将变为文本框,用户可以在其中编辑内容。此部分已完成。 现在,如果用户已经编辑了内容,但不想保存,则单击“取消”。当他这样做时,编辑的文本将替换为标签的原始内容(数据来自模型)。 我遵循了公认的答案 控制器: [HttpPost] public ActionResult Submit(int id, string actionType) { var model = ne
当用户单击edit时,面板内的标签将变为文本框,用户可以在其中编辑内容。此部分已完成。
现在,如果用户已经编辑了内容,但不想保存,则单击“取消”。当他这样做时,编辑的文本将替换为标签的原始内容(数据来自模型)。
我遵循了公认的答案 控制器:
[HttpPost]
public ActionResult Submit(int id, string actionType)
{
var model = new CustomerDetailsViewModel();
var custid = db.Customers.Find(id);
if(actionType == "Cancel")
{
model.Company = custid.Company;
model.Address = custid.Address;
model.FullName = custid.FirstName + " " + custid.LastName;
model.EMail = custid.EMail;
model.Phone = custid.Phone;
model.EntryDate = custid.EntryDate;
model.LastInterestShown = custid.LastInterestShown;
model.ID = custid.ID;
model.Status = custid.Status;
}
return PartialView(model);
}
视图:
有人能告诉我哪里出错了吗?您正在发送一个类型为“GET”的ajax请求,并发送到url:“/Client/Cancel” 如果你没有一个单独的
public ActionResult Cancel() {...}
在控制器中的字段中,此ajax不起作用
你需要做的是
var postdata = { "id": id-here, "actionType": actionType-here };
$("#btnCancel").click(function(e){
e.preventDefault();
$.ajax({
url: '/Client/Submit',
type: 'POST',
data: JSON.stringfy(postdata),
async: false
});
});
在ClientController中。不需要使用AJAX将输入字段重置为原始数据。假设已将模型数据传递给视图,则可以使用隐藏输入存储原始值,然后在用户单击“取消”按钮(只需使用常规按钮)时将其恢复 视图:
JS:
$(“#btnCancel”)。单击(函数(e){
$('公司').val($('临时公司').val());
$('#Address').val($('#tempAddress').val());
$('#FullName').val($('#tempFullName').val());
});
单击按钮时,为什么要进行ajax调用?如果要在编辑值时重置这些值,则可以使用window.location.reload()
刷新页面,或使用javascript获取defaultValue
(第一次呈现页面时的初始值)并重置值,或者只使用
按钮为什么ajax type=GET和controller web操作是HTTP POST?还有,当ajax调用发出时,需要执行哪个控制器?如何转换label->textbox?只需返回另一种方式(很可能隐藏输入并显示原始标签)。@Sharukhkshaji在question@sumedha呃,这个问题是针对纯javascript的。您使用的是MVC,所以只需将LabelFor和EditorFor放在视图中,其中一个隐藏,并在它们之间切换/copy值。不要在表单中添加控件,因为它们没有正确的属性(例如验证)。是的,很抱歉我发布了错误的代码,我编辑了我的问题,并根据您的回答更正了我的代码,但仍然不起作用,因为您没有向控制器发送任何数据。我编辑了我的帖子,你应该如何准备你的数据,并用ajax帖子将其发送给controller。您应该在此处更改id,并在此处更改actionType部分。
public ActionResult Cancel() {...}
var postdata = { "id": id-here, "actionType": actionType-here };
$("#btnCancel").click(function(e){
e.preventDefault();
$.ajax({
url: '/Client/Submit',
type: 'POST',
data: JSON.stringfy(postdata),
async: false
});
});
<input type="hidden" name="tempCompany" id="tempCompany" value="@Model.Company">
<input type="hidden" name="tempAddress" id="tempAddress" value="@Model.Address">
<input type="hidden" name="tempFullName" id="tempFullName" value="@Model.FullName">
<script>
$("#btnCancel").click(function (e) {
$('#Company').val($('#tempCompany').val());
$('#Address').val($('#tempAddress').val());
$('#FullName').val($('#tempFullName').val());
});
</script>