`hello friends
Я разрабатываю форму ввода основных данных без использования каркаса объектов.У меня есть две таблицы создания и обработки деталей, для этого я передаю значения master и detail контроллеру с помощью вызова ajax.все идет хорошо, и все записи поступают в контроллер, я проверяю это, устанавливая точку останова.но проблема в том, что при проверке состояния модели она не идет внутрь.Это дает статической модели false и дает ошибку «Представление результатов = Расширение представления результатов будет перечислять IEnumerable».
please help me to resolve my issue
мой вызов ajax в представлении, создающий объекты детализации сделки
var dealDetail = { "ItemSysSeq": "", "Qty": "", "UnitPrice": "" };
// creating deal master objects
var DealMaster = { "DealSysSeq": "", "DealCode": "", "DealName": "", "ActiveFromDate": "", "ActiveToDate": "", "TotalCost": "", "Discount": "", "Dealoffer": "", "Remarks": "", "DealDetails": [] };
// // Set Deals Master Value
DealMaster.DealSysSeq = 0;
DealMaster.DealCode = $("#DealCode").val();
DealMaster.DealName = $("#DealName").val();
DealMaster.ActiveFromDate = $("#dateFrom").val
DealMaster.ActiveToDate = $("#dateTo").val();
DealMaster.TotalCost = $("#lblTotal").val();
DealMaster.Discount = $("#txtdiscount").val();
DealMaster.Dealoffer = $("#txtoffer").val();
DealMaster.Remarks = $("#txtremarks").val();
//creating the array and set the deal detail values
//$('#stockitemError').text('');
var stockvalues = [];
//var erroritemcount = 0;
$('#Dealdetailitems tr').each(function (tr) {
//if (
// $('select.pc', this).val() == "0" ||
// $('.txtQty', this).val() == "" ||
// isNaN($('.txtQty', this).val()) ||
// $('.txtopeningBalance', this).val() == "" ||
// isNaN($('.txtopeningBalance', this).val())
//)
//{
// erroritemcount++;
// $(this).addClass('error');
//}
//else {
dealDetail.ItemSysSeq = $('select.pc', this).val(),
dealDetail.Qty = parseFloat($('.txtQty', this).val()),
dealDetail.UnitPrice = parseFloat($('.txtUnitPrice', this).val())
DealMaster.DealDetails.push(dealDetail);
dealDetail = { "ItemSysSeq": "", "Qty": "", "UnitPrice": "" };
//}
});
// Set Ajax Post
$.ajax({
url: '/DealMaking/Create',
data: JSON.stringify(DealMaster),
//traditional: true,
type: "POST",
dataType: 'JSON',
contentType: "application/json; charset=utf-8",
success: function (result) {
//check is successfully save to database
if (result.Scccess == 1) {
//will send status from server side
alert('Successfully done.');
}
else {
alert(result.ex);
}
}
});
});
//my controller
public JsonResult Create( ClsDealMaking clsDeal )
{
bool status = false;
if (ModelState.IsValid)
{
using (SqlConnection sqlCon = new SqlConnection(obj_conn.Conn()))
{
sqlCon.Open();
string query = "INSERT INTO [dbo].[DealMaking] (DealCode,DealName,ActiveFromDate,ActiveToDate,TotalCost,DiscountInPercentage,DealOffer,Remarks) ";
query = query + "OUTPUT inserted .itemSysSeq Values(@DealCode,@DealName,@ActiveFromDate,@ActiveToDate,@TotalCost,@DiscountInPercentage,@DealOffer,@Remarks)";
SqlCommand sqlCmd = new SqlCommand(query, sqlCon);
sqlCmd.Parameters.AddWithValue("@DealCode", clsDeal.DealCode);
sqlCmd.Parameters.AddWithValue("@DealName", clsDeal.DealName);
sqlCmd.Parameters.AddWithValue("@ActiveFromDate", (object)clsDeal.ActiveFromDate.ToShortDateString() ?? DBNull.Value);
sqlCmd.Parameters.AddWithValue("@ActiveToDate", (object)clsDeal.ActiveToDate.ToShortDateString() ?? DBNull.Value);
sqlCmd.Parameters.AddWithValue("@TotalCost", (object)clsDeal.TotalCost ?? DBNull.Value);
sqlCmd.Parameters.AddWithValue("@DiscountInPercentage", (object)clsDeal.Discount ?? DBNull.Value);
sqlCmd.Parameters.AddWithValue("@DealOffer", (object)clsDeal.Dealoffer ?? DBNull.Value);
sqlCmd.Parameters.AddWithValue("@Remarks", (object)clsDeal.Remarks ?? DBNull.Value);
// sqlCmd.Parameters.AddWithValue("@DealImage", (object)clsDeal.DealImage ?? DBNull.Value);
clsDeal.DealSysSeq = (int)sqlCmd.ExecuteScalar();
}
}
}
return Json(JsonRequestBehavior.AllowGet);
}
and model is//
public class ClsDealMaking
{
public int DealSysSeq { get; set; }
public string DealCode { get; set; }
public string DealName { get; set; }
public DateTime ActiveFromDate { get; set; }
public DateTime ActiveToDate { get; set; }
public double TotalCost { get; set; }
public double Discount { get; set; }
public double Dealoffer { get; set; }
public string Remarks { get; set; }
// public Byte[] DealImage { get; set; }
public virtual ICollection<clsDealDetail> DealDetails { get; set; }
}