我正在尝试创建一个下拉菜单,无论何时选择一个选项,它都需要更新数据库中的一行。我正在使用此代码创建下拉菜单
表格
using (Ajax.BeginForm("PartialViewName", "admin", null, new AjaxOptions
{
HttpMethod = "Post",
InsertionMode = InsertionMode.Replace,
//LoadingElementId = "LoadingLink",
UpdateTargetId = "PartialViewName"
}, new { id = "connectNewForm" }))
下拉代码
<select name="statusDD" onchange="ChangeStatus(this.value)">
<option value="">Update Status</option>
<option value="1">Open</option>
<option value="2 ">In Progress</option>
<option value="3">Pending</option>
<option value="4">To Be Verified</option>
<option value="5">Approved</option>
<option value="6">Disapproved</option>
<option value="7">Closed</option>
</select>
ChangeStatus
function ChangeStatus() {
var form = jQuery(".FormID");
var formData = form.serialize();
$.ajax({
url: "/Controller/ActionResult",
data: formData,
cache: false,
error: function (e) {
if (form == null) {
alert("DIDN'T WORK FORM IS NULL");
}
else {
alert("DIDN'T WORK something else");
}
},
success: function (response) {
// A response to say if it's updated or not
alert("worked");
}
});
}
在控制器中
public ActionResult UpdateStatus(int id, FormCollection formValues)
{
int ID = util.IntUtilParse(formValues["ID"]);
int newStatus = util.IntUtilParse(formValues["Status"]);
using (var dbContext = new Project.OpenAccess.DataBase())
{
//var swm = dbContext.StoredProcedure(
var swm = dbContext.StoredProcedure(ID, newStatus);
dbContext.SaveChanges();
return PartialView();
}
}
每当我选择一个选项时,它会通过ajax然后抛出一个错误并且永远不会进入控制器。我对Ajax很新,我不确定它是怎么回事。
答案 0 :(得分:0)
$.ajax({
url: "/Controller/ActionResult",
data: formData,
cache: false,
尝试更改为
$.ajax({
url: 'http://localhost\\:#####/{Controller Name}/UpdateStatus',
data: formData,
type: "POST",
cache: false,
不是100%的应用程序逻辑,但这就是你没有击中控制器的原因。请注意,占位符指示控制器的名称,因为它的名称未发布。例如,如果名称为CustomerController
,那么您的ajax网址将如此url: 'http://localhost\\:#####/Customer/UpdateStatus'