c# - 由于 ID 冲突,表单未将值返回给控制器操作
问题描述
我有一个带有 DropDownListFor 的表单。当我从下拉列表中选择 ID 时,选择日期并单击提交,我收到错误:
参数字典包含“Namesppace”中方法“System.Web.Mvc.ActionResult Index(Int32, System.DateTime, NameSpace.ViewModels.TerminalReceiptPostData)”的不可为空类型“System.Int32”的参数“CasinoID”的空条目.Controllers.TerminalReceiptsController'。可选参数必须是引用类型、可空类型或声明为可选参数。参数名称:参数
只需一个常规的输入标签并手动输入它就可以正常工作......但是当我添加一个 DropDownListFor 时,就会出现这个问题。我是否设置了 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 err 实例的 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")
解决方案
将int CasinoID
被一个名为 的表单域绑定CasinoID
。我认为 @Html.DropDownListFor 没有生成您想要的“名称”。
您可以明确添加名称,例如
@Html.DropDownListFor(o => o.TerminalReceiptPostData.CasinoIdDDL, Model.TerminalReceiptPostData.CasinoIdDDL, new { id = "CasinoID", name="CasinoID"})
或者更好地创建一个带有 CasinoID、Date 和 CId 字段的 ViewModel 并BindProperty
在该 ViewModel 实例上使用
推荐阅读
- c# - 如何备份 WPF 数据网格使用的可观察集合?
- encryption - 为什么浏览器显示实际证书并且 mitmproxy 仍然能够解密?
- typescript - 如何使用类型声明实现深度克隆功能?
- sap-cloud-platform - 在运行时更改基于 SAP Java Buildpack 的 cf 应用程序的日志级别
- deep-learning - COCO mAP 哪个值好?
- php - 将 PHP 嵌套字符串案例评估为布尔值
- swift - Swift 泛型类型问题:“无法调用非函数类型‘Int’的值”
- python - 调用 pandas to_datetime(或 dateutils)时获取输入精度?
- api-gateway - 大使边缘堆栈:使用示例项目,但不使用我的项目
- java - Struts 从属性文件中读取值