为什么我的对话框表单数据没有传递到我的 Ajax Post 中的控制器?
Why is my dialog form data not being passed to my controller in my Ajax Post?
我创建了一个部分视图,它在表单 "email address" 上接受一个参数,我希望将该字符串传递到我的名为 "InviteTeam" 的控制器,它被装饰为 "HttpPost" .
这里是部分视图和 ajax 命令
<form id="inviteTeam">
<label class="sr-only" for="communityCity">Team Email Address</label>
<input class="form-control" type="text" name="teamEmailAddress" id="teamEmailAddress" placeholder="Team Email">
<a href="#" id="btnSubmit" class="btn btn-sucess">Invite</a>
</form>
<script>
$(document).ready(function () {
$("#btnSubmit").click(function () {
var formdata = $("#inviteTeam").serialize();
alert(formdata);
$.ajax({
type: "POST",
url: "/habitats/InviteTeam",
data: formdata,
success: function () {
$("#inviteModal").modal("hide");
window.location.href = "/Habitats/EditCommunity/"
},
error: function (errorData) { alert(errorData); }
})
});
});
</script>
这是我的控制器代码:我的输入字符串是 "email" 是 null
public ActionResult InviteTeam()
{
return PartialView();
}
[HttpPost]
public ActionResult InviteTeam(string email)
{
return RedirectToAction("EditCommunity", "Habitats");
}
将 name="teamEmailAddress" 更改为 name="email" 尝试以下操作:
<form id="inviteTeam">
<label class="sr-only" for="communityCity">Team Email Address</label>
<input class="form-control" type="text" name="email" id="teamEmailAddress" placeholder="Team Email">
<a href="#" id="btnSubmit" class="btn btn-sucess">Invite</a>
</form>
<script>
$(document).ready(function () {
$("#btnSubmit").click(function () {
var formdata = $("#inviteTeam").serialize();
alert(formdata);
$.ajax({
type: "POST",
url: "/habitats/InviteTeam",
data: formdata,
success: function () {
$("#inviteModal").modal("hide");
window.location.href = "/Habitats/EditCommunity/"
},
error: function (errorData) { alert(errorData); }
})
});
});
</script>
另一种解决方案是更改操作方法中的参数名称,例如:
[HttpPost]
public ActionResult InviteTeam(string teamEmailAddress)
{
return RedirectToAction("EditCommunity", "Habitats");
}
此外,如果您只想重定向,则不需要任何 ajax 调用。您可以简单地在 javascript 中重定向为:
window.location.href = "/Habitats/EditCommunity/"
但是如果你必须对你的电子邮件地址做一些逻辑,然后点击控制器操作和 return JSON 因为 RedirectToAction 在 Ajax 调用中不起作用:
return Json("true");
在你Ajax的成功方法中,你可以检查:
success: function (data) {
if (data == true){
$("#inviteModal").modal("hide");
window.location.href = "/Habitats/EditCommunity/";
}
}
我创建了一个部分视图,它在表单 "email address" 上接受一个参数,我希望将该字符串传递到我的名为 "InviteTeam" 的控制器,它被装饰为 "HttpPost" .
这里是部分视图和 ajax 命令
<form id="inviteTeam">
<label class="sr-only" for="communityCity">Team Email Address</label>
<input class="form-control" type="text" name="teamEmailAddress" id="teamEmailAddress" placeholder="Team Email">
<a href="#" id="btnSubmit" class="btn btn-sucess">Invite</a>
</form>
<script>
$(document).ready(function () {
$("#btnSubmit").click(function () {
var formdata = $("#inviteTeam").serialize();
alert(formdata);
$.ajax({
type: "POST",
url: "/habitats/InviteTeam",
data: formdata,
success: function () {
$("#inviteModal").modal("hide");
window.location.href = "/Habitats/EditCommunity/"
},
error: function (errorData) { alert(errorData); }
})
});
});
</script>
这是我的控制器代码:我的输入字符串是 "email" 是 null
public ActionResult InviteTeam()
{
return PartialView();
}
[HttpPost]
public ActionResult InviteTeam(string email)
{
return RedirectToAction("EditCommunity", "Habitats");
}
将 name="teamEmailAddress" 更改为 name="email" 尝试以下操作:
<form id="inviteTeam">
<label class="sr-only" for="communityCity">Team Email Address</label>
<input class="form-control" type="text" name="email" id="teamEmailAddress" placeholder="Team Email">
<a href="#" id="btnSubmit" class="btn btn-sucess">Invite</a>
</form>
<script>
$(document).ready(function () {
$("#btnSubmit").click(function () {
var formdata = $("#inviteTeam").serialize();
alert(formdata);
$.ajax({
type: "POST",
url: "/habitats/InviteTeam",
data: formdata,
success: function () {
$("#inviteModal").modal("hide");
window.location.href = "/Habitats/EditCommunity/"
},
error: function (errorData) { alert(errorData); }
})
});
});
</script>
另一种解决方案是更改操作方法中的参数名称,例如:
[HttpPost]
public ActionResult InviteTeam(string teamEmailAddress)
{
return RedirectToAction("EditCommunity", "Habitats");
}
此外,如果您只想重定向,则不需要任何 ajax 调用。您可以简单地在 javascript 中重定向为:
window.location.href = "/Habitats/EditCommunity/"
但是如果你必须对你的电子邮件地址做一些逻辑,然后点击控制器操作和 return JSON 因为 RedirectToAction 在 Ajax 调用中不起作用:
return Json("true");
在你Ajax的成功方法中,你可以检查:
success: function (data) {
if (data == true){
$("#inviteModal").modal("hide");
window.location.href = "/Habitats/EditCommunity/";
}
}