首页 > 解决方案 > 由于 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")

标签: c#asp.net-mvcasp.net-mvc-4razor

解决方案


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 实例上使用


推荐阅读