【发布时间】:2018-02-22 02:10:51
【问题描述】:
我从存储过程结果中获取了多个表。我想将此所有表作为 asp.Net MVC 中的 JsonResult 作为 ajax 响应返回。但我没有收到console.log(response); 的回复。如何在 MVC 控制器中将多个表作为 Jsonresult 返回?
我的调试器进入方法并从存储过程中获取数据并以 Json 的形式返回,但之后在控制台中我收到如下错误,
在 ajax 请求中,我调用了GetKYCListForUpdate 方法,如下所示,
$('#KycListTable tbody').on('click', '.btn-edit', function (e) {
var data = table.row($(this).parents('tr')).data();
if (data.PartyBillId != null) {
$.ajax({
type: "POST",
url: "@Url.Action("GetKYCListForUpdate", "KYCRegistration")",
data: { id: data.PartyBillId },
success: function (response) {
debugger
console.log(response);
var result = response.aaData;
if (result != null) {
$.each(result, function (i, item) {
console.log(item)
});
}
}
});
}
});
在asp.net MVC控制器方法如下,
public JsonResult GetKYCListForUpdate(int id)
{
var AuthId = NC.ToInt(((Variables.scUserDetail)Session["UserDetail"]).AuthId);
SqlConnection objsql = default(SqlConnection);
objsql = new SqlConnection(Connect.GetConnStr(1));
DataSet dsData = new DataSet();
SqlCommand objSelectCmd = new SqlCommand();
try
{
//objsql.ConnectionString = objsql;
objsql.Open();
objSelectCmd.CommandType = CommandType.StoredProcedure;
objSelectCmd.Connection = objsql;
objSelectCmd.CommandText = "Sp_M35_01_GetKycListToEdit";
objSelectCmd.Parameters.AddWithValue("@BillPartyId", id);
objSelectCmd.Parameters.AddWithValue("@AuthId", AuthId);
SqlDataAdapter objDataAdapter = new SqlDataAdapter();
objDataAdapter = new SqlDataAdapter(objSelectCmd);
objDataAdapter.Fill(dsData);
for (int i = 0; i < dsData.Tables.Count; i++)
{
if (dsData.Tables[i].Rows.Count > 0)
{
result.Add(GetTableRows(dsData.Tables[i]));
}
}
return Json(new { aaData = result }, JsonRequestBehavior.AllowGet);
}
public List<Dictionary<string, object>> GetTableRows(DataTable dtData)
{
List<Dictionary<string, object>>
lstRows = new List<Dictionary<string, object>>();
Dictionary<string, object> dictRow = null;
foreach (DataRow dr in dtData.Rows)
{
dictRow = new Dictionary<string, object>();
foreach (DataColumn col in dtData.Columns)
{
dictRow.Add(col.ColumnName, dr[col]);
}
lstRows.Add(dictRow);
}
return lstRows;
}
【问题讨论】:
-
我认为
var data = table.row($(this).parents('tr')).data();需要是:-var data = $(this).parent('tr').data(); -
根据错误,操作方法“GetKYCListForUpdate”未获取 ID 参数。检查 data.PartyBillId 是否为有效数字
-
正如@TechGirl 所说,错误表明您没有将
idoparameter 发送到控制器。因此,请检查您发送的内容。 -
@TechGirl 我正在向方法发送 id 参数并将值输入调试器。它执行存储过程并从存储过程中获取数据,然后作为 ajax 返回。但在前端之后,我收到了这个错误。
-
@alka 检查我的答案。从您的屏幕截图中,我认为您正在同时发回正在运行的 ajax 调用。
标签: jquery ajax asp.net-mvc