【发布时间】:2020-12-19 12:22:06
【问题描述】:
我正在尝试从 cshtml 页面以操作方法 CloseCase 传递数据,并希望在控制器的操作端传递一个值数组。但我收到错误消息。我是 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; }
}
【问题讨论】:
-
欢迎来到 StackOverflow。请阅读How to Ask,并尝试提供minimal reproducible example。
-
你能分享从视图发送到控制器的json吗?
-
@ChetanRanpariya casedetail = {FirstCol:“on”,SecondCol:“2”,ThirdCol:“CAB”,FourthCol:“1”,FifthCol:“585.60”,...},我正在接收价值这边
-
ISpell 类没有 FirstCol、SecondCol 等属性...
-
@ChetanRanpariya 是对的。那是你的主要问题。而且,您似乎只将一行/记录传递给您的操作,所以我会将这个
List<Ipcell> casedetail更改为这个Ipcell casedetail。如果您应用该更改,则在此行中command.Parameters.Add(":ICD_CASE_ID", casedetail[0]);将casedetail[0]替换为casedetail.CaseId。
标签: c# jquery asp.net ajax asp.net-mvc