Samps Pro Ответов: 0

Отправка значений массива из представления в контроллер без фреймворка сущностей в MVC


Я разрабатываю основную форму ввода подробных данных без использования entity framwork. У меня есть две таблицы deal making и deal details для этой цели я передаю значения master и detail контроллеру с помощью ajax-вызова. все идет хорошо, и все записи поступают в контроллер, я проверяю его, ставя точку останова. но проблема в том, что он не входит внутрь во время проверки состояния модели. Это дает модель stat false и дает ошибку " представление результатов = расширение представления результатов будет перечислять IEnumerable."

Что я уже пробовал:

//ajax вызов в поле зрения
var dealDetail = { "ItemSysSeq": "", "Qty": "", "UnitPrice": "" };

// создание мастер-объектов сделки

var DealMaster = { "DealSysSeq": "", "DealCode": "", "DealName": "", "ActiveFromDate": "", "ActiveToDate": "", "TotalCost": "", "Discount": "", "Dealoffer": "", "Примечания": "", "DealDetails": [] };

// // Установить Основное Значение Сделок
DealMaster.DealSysSeq = 0;
DealMaster.DealCode = $("#DealCode").val();
DealMaster.DealName = $("#DealName").val();
DealMaster.ActiveFromDate = $("#dateFrom").val
DealMaster.ActiveToDate = $("#dateTo").val();
DealMaster.TotalCost = $("#lblTotal").val();
DealMaster.Скидка = $("#txtdiscount").val();
DealMaster.Dealoffer = $("#txtoffer").val();
DealMaster.Remarks = $("#txtremarks").val();


//создание массива и установка значений детализации сделки

//$('#stockitemError').text(");
var stockvalues = [];
//var erroritemcount = 0;

$('#Dealdetailitems tr').each(функция (tr) {

//если (
// $('select.pc', this).val() == "0" ||
// $('.txtQty', этот).функция val() == "" ||
// isNaN($('.txtQty', this).val()) ||
// $('.txtopeningBalance', этот).функция val() == "" ||
// isNaN($('.txtopeningBalance', this).val())
//)
//{
// erroritemcount++;
// $(this).addClass('error');


//}



//еще {


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": "" };

//}

});


// Установить Ajax Post

$.Аякс({

url: '/DealMaking/Create',

сведения: в формате JSON.преобразовать в строки(DealMaster),

//традиционный: правда,

тип: "почта",

тип данных: 'JSON',

contentType: "application/json; charset=utf-8",

успех: функция (результат) {

//проверка успешно сохранена в базе данных

если (результат.Scccess == 1) {

//отправит статус со стороны сервера

предупреждение('успешно'.);
}

еще {
предупреждение(результат.экс);
}
}
});
});
//мой контроллер
public JsonResult Create( ClsDealMaking clsDeal )
{
bool status = false;

if (ModelState.Функция IsValid)
{

using (SqlConnection sqlCon = new SqlConnection(obj_conn.Коннектикут()))
{

sqlCon.Открыть();
string query = "вставить в [dbo].[DealMaking] (DealCode,DealName,ActiveFromDate,ActiveToDate,TotalCost,DiscountInPercentage,DealOffer,Примечания) ";
query = query + "OUTPUT inserted .itemSysSeq Values(@DealCode,@DealName,@ActiveFromDate,@ActiveToDate,@TotalCost,@DiscountInPercentage,@DealOffer,@Remarks)";
Команда sqlcommand программа sqlcmd = новый sqlcommand, который(запрос, sqlCon);
программа sqlcmd.Параметры.AddWithValue("@DealCode", clsDeal.DealCode);
программа sqlcmd.Параметры.AddWithValue("@DealName", clsDeal.DealName);
программа sqlcmd.Параметры.AddWithValue("@ActiveFromDate", (object)clsDeal.ActiveFromDate.ToShortDateString() ?? Значение dbnull.Ценность);
программа sqlcmd.Параметры.AddWithValue("@ActiveToDate", (object)clsDeal.ActiveToDate.ToShortDateString() ?? Значение dbnull.Ценность);
программа sqlcmd.Параметры.AddWithValue("@TotalCost", (object)clsDeal.Totalcost в ?? Значение dbnull.Ценность);
программа sqlcmd.Параметры.AddWithValue("@DiscountInPercentage", (object)clsDeal.Скидка ?? Значение dbnull.Ценность);
программа sqlcmd.Параметры.AddWithValue("@DealOffer", (object)clsDeal.Dealoffer ?? Значение dbnull.Ценность);
программа sqlcmd.Параметры.AddWithValue("@Remarks", (object)clsDeal.Remarks ?? Значение dbnull.Ценность);
// программы sqlcmd.Параметры.AddWithValue("@DealImage", (object)clsDeal.DealImage ?? Значение dbnull.Ценность);

клсдил.DealSysSeq = (int)sqlCmd.Executescalar так();

}

}

}

return Json(JsonRequestBehavior.AllowGet);
}

а модель есть//

публичный класс ClsDealMaking
{
public int DealSysSeq { get; set; }
публичная строка DealCode { get; set; }
публичная строка DealName { get; set; }
public DateTime ActiveFromDate { get; set; }
public DateTime ActiveToDate { get; set; }
общественные двойной totalcost в { получить; набор; }
публичная двойная скидка { get; set; }
public double Dealoffer { get; set; }
замечания общественности строку { получить; набор; }
// public Byte[] DealImage { get; set; }
общедоступный виртуальный интерфейс ICollection&ЛТ;clsdealdetail&ГТ; DealDetails { получить; набор; }
}

Vincent Maverick Durano

Покажите нам, как работает ваша модель ClsDealMaking создаваемый.

Samps Pro

это моя модель
публичный класс ClsDealMaking
{
public int DealSysSeq { get; set; }
публичная строка DealCode { get; set; }
публичная строка DealName { get; set; }
public DateTime ActiveFromDate { get; set; }
public DateTime ActiveToDate { get; set; }
общественные двойной totalcost в { получить; набор; }
публичная двойная скидка { get; set; }
public double Dealoffer { get; set; }
замечания общественности строку { получить; набор; }
// public Byte[] DealImage { get; set; }
общедоступный виртуальный интерфейс ICollection&ЛТ;clsdealdetail&ГТ; DealDetails { получить; набор; }
}

Vincent Maverick Durano

Кажется, я не могу найти никаких правил проверки, применимых к вашей модели. Для этого IsValid должен вернуть true.

Richard Deeming

"Расширение представления результатов приведет к перечислению IEnumerable"

Это не ошибка. Это просто говорит вам о том, что если вы развернете представление результатов, ему придется повторять результаты. В некоторых случаях это может изменить состояние программы, что вызовет проблемы. Но в данном случае это не вызовет никаких проблем.

Разверните представление результатов и изучите фактические ошибки состояния модели, чтобы увидеть, в чем заключается проблема.

Samps Pro

проблема в том, что я отправляю массив в модель, поэтому он дает мне ошибку
так что своего скажите им НТ используя правильную модель trpe, чтобы получить коллекцию

0 Ответов