【发布时间】:2019-08-01 14:19:47
【问题描述】:
我正在尝试使用 Javascript 更新表(基于视图的用户输入)。直到alert("We Made it This Far") 一切似乎都在工作。然后我得到alert("Failed")。
我在控制器的第一行放置了一个断点。在调试中运行时,我从未遇到过该断点。所以我想我们从来没有真正到达控制器。
我已经尝试了许多不同的 URL 变体来访问控制器,但我正在拔头发。
我的控制器是NewOrderController.cs。我的行动是SaveData
我将在下面发布我的代码。我认为不需要控制器代码,因为我认为我什至没有走那么远来看看它是否有效。但是,如果需要该代码,请告诉我,我也会发布它。
$("#addsupply").click(function() {
var RequisitionNumber = document.getElementById("reqlabel").textContent;
var UnitsOrdered = document.getElementById('HowMany').value;
var e = document.getElementById("SuppliesList");
var SuppliesID = e.options[e.selectedIndex].value;
if (UnitsOrdered.trim() == "" || SuppliesID.trim() == "") {
alert("You Must Select a Supply AND Enter The Amount of Supplies to Order!");
return false;
}
alert("we made it this far")
// here call server side function for save data using jquery ajax
$.ajax({
url: "../NewOrder/SaveData",
// url: '@Url.Action("NewOrder", "SaveData")',
type: "POST",
dataType: "json",
contentType: "application/json; charset=utf-8",
data: JSON.stringify({
"RequisitionNumber": RequisitionNumber,
"UnitsOrdered": UnitsOrdered,
"SuppliesID": SuppliesID
}),
success: function(data) {
if (data.d == "success") {
alert("Data saved successfully");
// clear text here after save complete
$('#HowMany').val('');
}
},
error: function(xhr, ajaxOptions, thrownError) {
// alert(thrownError);
alert("failed");
}
}).done(function() {
alert("we did it");
});
});
编辑:为 SaveData 方法添加代码:
[WebMethod]
public static string SaveData(string RequisitionNumber, int UnitsOrdered, int SuppliesID)
{
string status = "";
// apply validation here
ICS_Orders c = new ICS_Orders { LineID = 0, RequisitionNumber = RequisitionNumber, UnitsOrdered = UnitsOrdered, SuppliesID = SuppliesID };
// here MyDatabaseEntities is our dbContext
using (ICSContext dc = new ICSContext())
{
dc.ICS_Orders.Add(c);
dc.SaveChanges();
status = "success";
}
return status;
}
}
}
第二次编辑:以下是我从 Fidder 得到的错误。未找到资源。我已经尝试了所有方式(但松散)来添加网址,但似乎没有任何效果。不明白为什么它找不到我的控制器方法。它在我的控制器文件夹中。 .这是个问题吗?
<h2> <i>The resource cannot be found.</i> </h2></span>
<font face="Arial, Helvetica, Geneva, SunSans-Regular, sans-serif ">
<b> Description: </b>HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. Please review the following URL and make sure that it is spelled correctly.
<br><br>
<b> Requested URL: </b>/NewOrder/SaveData<br><br>
【问题讨论】:
-
检查控制台以了解响应的确切错误。我建议取消注释
@Url.Action()调用,以便您知道 URL 是正确的。 -
请展示您的
SaveData方法是什么样的。 -
@jcruz - 我添加了 SaveData 方法代码。
-
尝试将 [FromBody] 参数绑定添加到您的方法。阅读此处了解更多信息:docs.microsoft.com/en-us/aspnet/web-api/overview/…
标签: jquery asp.net-mvc-5 jscript