C# 将HTML站点链接到MVC站点';s动作
我正在点击按钮构建一个HTML页面,它会将数据从HTML页面的本地存储传输到MVC站点的操作和处理操作,然后将数据保存到MVC站点 这是我的HTML按钮的功能:C# 将HTML站点链接到MVC站点';s动作,c#,asp.net-mvc,C#,Asp.net Mvc,我正在点击按钮构建一个HTML页面,它会将数据从HTML页面的本地存储传输到MVC站点的操作和处理操作,然后将数据保存到MVC站点 这是我的HTML按钮的功能: function OH10() { var url1 = "@Url.Action('createFuel','FuelExtras')"; debugger; for (var i = 0; i < localStorage.leng
function OH10() {
var url1 = "@Url.Action('createFuel','FuelExtras')";
debugger;
for (var i = 0; i < localStorage.length; i++) {
var key = localStorage.key(i);
var val = localStorage.getItem(key);
$.ajax({
type: "POST",
url: url1,
data: val,
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function () {
alert("Data has been added successfully.");
},
error: function () {
alert("Error while inserting data");
}
});
}
};
有什么建议吗?
还有一个问题正在开发中,我在同一个解决方案中构建了两个站点,但当我将其部署到intranet时,我必须将其分为两个站点。可以吗?我在您的示例中发现了几个错误: 1)
System.Web.Services.WebMethod
仅在webforms中使用,不能用于MVC中的ActionResult
,应将其删除
2) AJAX回调放在一个循环中,因此它将执行多次而不是单个请求
3) 传递的数据是作为单个字符串从getItem()
函数中获取的最后一个localStorage
值,而不是反映模型属性名称及其值的键值对
因此,假设您拥有此模型:
public class FuelExtra
{
public string CaptainEmpNo { get; set; }
public string AirCraft { get; set; }
public string FlightNo { get; set; }
public string DepartureAirport { get; set; }
public string ArrivalAirport { get; set; }
// other properties
}
然后您应该将键值对对象作为JSON字符串发送,因为contentType
设置已被JSON.stringify()
设置为application/JSON
,如下例所示:
函数OH10(){
var key=[];//键数组
var val=[];//值数组
var obj={};//组合的KVP对象
var url1=“@Url.Action(“CreateFuel”、“FuelExtras”)”;
调试器;
for(var i=0;i
控制器动作应如下所示:
[HttpPost]
public ActionResult CreateFuel(FuelExtra fuelExtra)
{
db.FuelExtras.Add(fuelExtra);
db.SaveChanges();
return Json(new { Message = "SUCCESS" });
}
因为您是以POST方法发送AJAX请求,所以不需要JsonRequestBehavior.AllowGet
注意:
确保从AJAX传递的JSON字符串中的所有键名与在
FuelExtra
类中声明的所有属性名相同。[System.Web.Services.WebMethod]
在MVC中是不必要的,应该删除。另外contentType:“application/json;charset=utf-8”
如果没有对数据使用json.stringify
,则是错误的。你能显示FuelExtra
类属性吗(只需编辑问题就可以了)?谢谢@TetsuyaYamamoto,这是我的FuelExtra.cs:public partial class public int ID{get;set;}public string CaptainEmpNo{get;set;}public string飞机{get;set;}public string FlightNo{get;set;}公共字符串DepartureAirport{get;set;}公共字符串ArrivalAirport{get;set;}最近,当我在MVC站点中创建一个视图并使用相同的按钮代码时,它可以工作,但是当我将此代码复制到不同的HTML页面时,每次都会出错。您遇到了什么样的错误?您能否提供val
变量的内容(使用console.log(val)
),因为正确的data
设置应该是data:{fuelExtra:val}
?根据您当前的代码,您正在多次发送AJAX请求,而不是单个请求。错误是无法连接到url@tetsuyayayamamoto,下面是示例val:{“Fuel444”:“{”CaptainEmpNo\:“4445\”,““AirCraft\”:“5555\”,““FlightNo\”:“444\”,“DepartureAirport\”:“HCM\”,“ArrivalAirport\”:“HN\”,“ReasonFuel1\:“Weather InRoute\”,“,”ExtraFuel1\“:“1112\”,“ReasonExtraFuel2\”:“\”,“ExtraFuel2\”:“\”,“ReasonExtraFuel3\”:“\”,“ExtraFuel3\”:“\”,“ReasonExtraFuel4\”:“\”,“ExtraFuel4\”,“Reason\”:“\”,“TotalExtraFuel3\”:“1112\”}抱歉,Tetsuya在插入数据时仍然出现错误”。我看到,在调试时,代码似乎在$.ajax处停止,然后立即跳转到错误,而不是转到代码“type”或任何东西?尝试使用Fiddler或其他工具检查请求和响应详细信息,或利用警报(err)
显示消息。还要确保URL是正确的,可供请求访问。
[HttpPost]
public ActionResult CreateFuel(FuelExtra fuelExtra)
{
db.FuelExtras.Add(fuelExtra);
db.SaveChanges();
return Json(new { Message = "SUCCESS" });
}