c# - 试图将json值从视图传递到控制器
问题描述
我正在尝试CloseCase
从 cshtml 页面以操作方法传递数据,并希望在控制器的操作端传递一个值数组。但我收到错误消息。我是 asp.net mvc 的新手,所以我不能说我的方法是否正确。
从 ajax 传递值时,它在CloseCase
方法中显示空值。我想获得command.Parameters.Add(":ICD_CASE_ID", casedetail[0]);
均值casedetail[0]
,但在调试时我发现方法 CloseCase 空值的值。任何想法将不胜感激。
.cshtml
$(".btnrowvalue2").click(function () {
//var casedetails = new Array();
var tr = $(this).closest('tr');
var casedetail={};
var casedetails=[];
casedetail["FirstCol"] = tr.find('input[name="Chkb"]').val();
casedetail["SecondCol"] = tr.find('input[name="CaseId"]').val();
casedetail["ThirdCol"] = tr.find('input[name="Desc"]').val();
casedetail["FourthCol"] = tr.find('input[name="NBill"]').val();
casedetail["FifthCol"] = tr.find('input[name="TAmnt"]').val();
casedetail["SixthCol"] = tr.find('input[name="Stat"]').val();
casedetail["SeventhCol"] = tr.find('input[name="Cron"]').val();
casedetail["EightCol"] = tr.find('input[name="Clon"]').val();
casedetails.push(casedetail);
//alert('Type1 : ' + FirstCol + ' ' + SecondCol + ' ' + ThirdCol);
$.ajax({
type:"POST",
url:"/Home/CloseCase",
data:JSON.stringify(casedetails),
contentType:"application/json; charset=utf-8",
datatype:"json",
success:function(r){
alert(r + " record(s) inserted.");
}
});
});
控制器端
public JsonResult CloseCase(List<Ipcell> casedetail)
{
try
{
conn.Open();
string qry = "UPDATE ASE_S SET ICD_STATUS='O',ICD_CLOSED_ON=:ICD_CLOSED_ON,ICD_CLOSED_BY=:ICD_CLOSED_BY WHERE ICD_CASE_ID =:ICD_CASE_ID";
OracleCommand command = new OracleCommand(qry, conn);
command.Parameters.Add(":ICD_CLOSED_ON", DateTime.Now);
command.Parameters.Add(":ICD_CLOSED_BY", Session[CommonConstants.SESSION_USER_ID]);
command.Parameters.Add(":ICD_CASE_ID", casedetail[0]);
int insertedRecords=command.ExecuteNonQuery();
return Json(insertedRecords);
}
catch (Exception ex)
{
}
finally
{
conn.Close();
}
return null;
}
模型类
public class Ipcell
{
public string CaseId { get; set; }
public string Descripton { get; set; }
public int NoOfBill { get; set; }
public decimal TotalAmount { get; set; }
public DateTime From { get; set; }
public DateTime To { get; set; }
public string Type { get; set; }
public string Status { get; set; }
public DateTime CreatedOn { get; set; }
public DateTime ClosedOn { get; set; }
}
解决方案
我检查了你的代码,我发现了问题
检查我的屏幕截图并实现它对我有用。
阿贾克斯调用
var casedetail = {};
var casedetails = [];
var date = new Date();
casedetail["CaseId"] = "1";
casedetail["Descripton"] = "2";
casedetail["NoOfBill"] = "3";
casedetail["TotalAmount"] = "4";
//casedetail["From"] = date.toISOString();
//casedetail["To"] = date.toISOString();
casedetail["Type"] = "7";
casedetail["Status"] = "8";
//casedetail["CreatedOn"] = date.toISOString();
//casedetail["ClosedOn"] = date.toISOString();
casedetails.push(casedetail);
$.ajax({
type: "POST",
url: "../Home/CloseCase",
data: JSON.stringify(casedetails),
contentType: "application/json; charset=utf-8",
datatype: "json",
success: function (r) {
alert(r + " record(s) inserted.");
}
});
代码
public JsonResult CloseCase(List<Ipcell> casedetail)
{
try
{
return Json(new { },JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
}
finally
{
}
return Json(new { }, JsonRequestBehavior.AllowGet);
}
public class Ipcell
{
public string CaseId { get; set; }
public string Descripton { get; set; }
public int NoOfBill { get; set; }
public decimal TotalAmount { get; set; }
public DateTime From { get; set; }
public DateTime To { get; set; }
public string Type { get; set; }
public string Status { get; set; }
public DateTime CreatedOn { get; set; }
public DateTime ClosedOn { get; set; }
}
推荐阅读
- javascript - 对 DataTable 的默认更改
- vb.net - 如何用我自己的代码“替换”异常?
- .net - 解析 dacpac docker microsoft sql server 时出错
- reactjs - 打字稿:如何为泛型类型定义对象键的类型
- python - Python:如何为 pandas 数据框中的每个 ID 保存不同的 .csv?
- python - 迭代数据框并组合来自不同列的值
- google-apps-script - 我可以将预定义的字符串链接到 Google 电子表格中的输入吗
- docker - Nexus Repository Pro 可以检查容器根权限等
- php - 使用 php 中的 foreach 循环提取嵌套的 JSON 数据
- security - 在 Flask webapp 中安全地使用 URL 中的变量