【发布时间】:2014-01-04 00:19:04
【问题描述】:
我不确定我错过了什么,我尝试了其他一些方法,但我得到了相同的观点,我被困在这里几个小时了。
我的问题是,当我试图将部分视图或 Json 表单从我的控制器返回到我的 jquery ajax 函数时,我得到的只是我的 Json 作为视图或只是我的部分视图。像这样:
我正在以引导模式编辑记录。就像这个例子Edit Modal
我的 JS:
// Handle "Edit Person" button click.
// This will make an ajax call, get information for person,
// put it all in the modal and display it
$(document).on('click', '.edit-provider', function () {
var personId = $(this).attr('id');
$.ajax({
url: '/Providers/Edit',
type: 'GET',
data: { id: personId },
success: function (data) {
$('#mdleditprovider').html(data).modal('show');
}
});
});
// Handle submitting of new information for Person.
// This will attempt to save new info
// If save was successful, it will close the Modal and reload page to see updated info
// Otherwise it will only reload contents of the Modal
$(document).on('click', '#btn-submit-edit-provider', function () {
var self = $(this);
$.ajax({
url: '/Providers/Edit',
type: 'POST',
data: self.closest('form').serialize(),
success: function (data) {
if (data.success == true) {
$('#mdleditprovider').modal('hide');
} else {
$('#mdleditprovider').html(data);
}
}
});
});
</script>
我的控制器:
[HttpGet]
public ActionResult Edit(int? id)
{
if (id == null) return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
Provider provider = db.Providers.Find(id);
if (provider == null) return new HttpStatusCodeResult(HttpStatusCode.NotFound);
return PartialView("Modals/Providers/FrmEdit", provider);
}
[HttpPost]
public ActionResult Edit(Provider provider)
{
if (ModelState.IsValid)
{
db.Entry(db.Providers.Find(provider.Id)).CurrentValues.SetValues(provider);
db.SaveChanges();
return Json(new { success = true });
}
// else
return PartialView("Modals/Providers/FrmEdit", provider);
}
当我调试我的 js 时,它从未在我的第二个函数中成功。我不确定我的错误是否不在这部分代码中,但我认为是的。
谢谢
更新:
遇到错误我不知道为什么
更新(2)
所以现在我试图找到这里发生了什么,我注意到我的表单有一个默认的 POST,我想这可能就是为什么我的代码在我的 js 中没有成功,默认值必须被称为我的 get操作,在我的 js 中,我现在正尝试进行不同的发布操作,但它不起作用是否可以更改这些默认值?我不确定这是否能解决我正在测试的问题。
我在这里解释一下我的想法:
在这个控制器中,我想用编辑操作结果填充一个模式,然后在我的更新操作中获取我的帖子
[HttpGet]
public ActionResult Edit(int? id)
{
if (id == null) return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
Provider provider = db.Providers.Find(id);
if (provider == null) return new HttpStatusCodeResult(HttpStatusCode.NotFound);
return PartialView("Modals/Providers/FrmEdit", provider);
}
[HttpPost]
public ActionResult Update(Provider provider)
{
if (ModelState.IsValid)
{
db.Entry(db.Providers.Find(provider.Id)).CurrentValues.SetValues(provider);
db.SaveChanges();
return View("Index",db.Providers.ToList());
}
// else
return PartialView("Modals/Providers/FrmEdit",provider);
}
这是我正在使用的 js,但我得到一个 http notfound(编辑帖子)
<script>
// Handle "Edit Person" button click.
// This will make an ajax call, get information for person,
// put it all in the modal and display it
$(document).on('click', '.edit-provider', function () {
var personId = $(this).attr('id');
$.ajax({
url: '/Providers/Edit',
type: 'GET',
data: { id: personId },
success: function (data) {
$('#mdleditprovider').html(data).modal('show');
}
});
});
$(function () {
$('#frmeditprovider').on('submit', function (e) {
e.preventDefault();
$.ajax({
url: '/Providers/Update', //this is the submit URL
type: 'POST', //or POST
data: $('#subscribe-email-form').serialize(),
success: function (data) {
alert('successfully submitted');
}
});
});
});
</script>
【问题讨论】:
标签: jquery asp.net-mvc