gpt4 book ai didi

jquery - 如何从 Javascript 调用 MVC5 操作?

转载 作者:行者123 更新时间:2023-12-01 05:13:20 24 4
gpt4 key购买 nike

我正在尝试使用 Javascript 更新表(基于 View 的用户输入)。直到警报(“我们做到了这一点”)一切似乎都正常。然后我收到警报(“失败”)

我在 Controller 的第一行放置了一个断点。在调试中运行时,我从未遇到过该断点。所以我想我们永远不会真正到达 Controller 。

我已经尝试了多种 URL 变体来访问 Controller ,但我感到很抓狂。

我的 Controller 是NewOrderController.cs。我的操作是 SaveData

我将在下面发布我的代码。我认为不需要 Controller 代码,因为我认为我什至没有走那么远来看看它是否有效。但是,如果需要该代码,请告诉我,我也会发布它。

$("#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 收到的错误。未找到资源。我已经尝试了各种方法(但松散)来添加网址,但似乎没有任何效果。不明白为什么它找不到我的 Controller 方法。它位于我的 Controller 文件夹内。 。这是一个问题吗?

        <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. &nbsp;Please review the following URL and make sure that it is spelled correctly.
<br><br>

<b> Requested URL: </b>/NewOrder/SaveData<br><br>

最佳答案

请更新 MVC 操作语法:

来自

[WebMethod]
public static string SaveData(string RequisitionNumber, int UnitsOrdered, int SuppliesID)

[HttpPost]
public ActionResult SaveData(string RequisitionNumber, int UnitsOrdered, int SuppliesID)

此外,(1) 只是关于更好实践的旁注:您可以使用这些属性创建一个类,并让 MVC 负责通过序列化映射到正确的属性,而不是用各种参数加载函数。

<form action="@Url.Action("SaveData", "Orders")"  method="post">
@using (Html.BeginForm("SaveData", "Orders", new {}, FormMethod.Post)) // Please check the syntax here.

(2) 您不使用表单发布有什么原因吗?您使用的是 Razor View 还是其他什么?如果是 Razor ,可以使用@Html.BeginForm

关于jquery - 如何从 Javascript 调用 MVC5 操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57311134/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com