У меня есть форма с DropDownListFor.Когда я выбираю идентификатор в раскрывающемся списке, выбираю дату и нажимаю кнопку «Отправить», я получаю сообщение об ошибке:
Словарь параметров содержит пустую запись для параметра «CasinoID» необнуляемого типа «Система»..Int32 для метода «System.Web.Mvc.ActionResult Index (Int32, System.DateTime, NameSpace.ViewModels.TerminalReceiptPostData)» в «Namesppace.Controllers.TerminalReceiptsController».Необязательный параметр должен быть ссылочным типом, обнуляемым типом или быть объявлен как необязательный параметр.Имя параметра: параметры
Это работало нормально только с обычным тегом Input и вводом его вручную ... однако, когда я добавил DropDownList, возникает эта проблема.Я неправильно настраиваю DDL?Любые другие вопросы относительно того, почему это произошло?Ниже приведен код.
Действие контроллера:
[HttpPost]
public ActionResult Index(int CasinoID, DateTime Date)
{
var model = TRBL.GetTransactionTestsData(CasinoID, Date);
return View(model);
}
Просмотр:
@using (Html.BeginForm("Index", "TerminalReceipts", new { id = "submitForm" }))
{
<div>
@*<input type="text" name="CasinoID" placeholder="Enter Casino ID" id="cIdSearch" />*@
@Html.DropDownListFor(o => o.TerminalReceiptPostData.CasinoIdDDL, Model.TerminalReceiptPostData.CasinoIdDDL, new { id = "CasinoID"})
<input id="datepicker" class="datepicker-base" name="Date" placeholder="MM/DD/YYY" type="text" />
<button type="submit" class="btn btn-sm btn-primary" id="search" onclick="checkField()"> Search Transactions</button>
</div>
}
Редактировать обновление
Итак, я смог немного изменить структуру, чтобы теперь можно было правильно передавать CasinoID в действие контроллера.Ниже приведены изменения ... однако после того, как действие возвращает модель, я получаю ссылку на объект obj, не установленную на экземпляр объекта ошибки.
Действие:
[HttpPost]
public ActionResult Index(int CasinoID, DateTime Date)
{
var id = Int32.Parse(Request.Form["CasinoID"].ToString());
var model = TRBL.GetTransactionTestsData(id, Date);
return View(model);
}
Изменить наDDL:
@Html.DropDownList("CasinoID", Model.TerminalReceiptPostData.CasinoIdDDL, "Select Casino")