繁体   English   中英

MVC,将模型ID从视图传递到控制器

[英]MVC, Pass model Id from view to controller

我有一个从数据库中获取的行的列表。 当我在视图中显示它们时,我使用foreach来显示它们全部。 在每一行中,我都放置了一个提交按钮,希望用户能够选择每一行。 为此,我需要将ID传递给控制器​​。

问题:如何将模型ID从视图传递到控制器?

现在,控制器中“ changeCheckBoxStatusToTrue(int?id)”中的ID返回NULL。

我目前的看法:

foreach (var item in Model)
    {
        <div class="col-md-12 table" style="display: table; margin: 0 0 0 0; ">
            <div class="col-md-2">
                <p><b>@Html.DisplayFor(modelItem => item.Name)</b></p>
            </div>
            <div class="col-md-2">
                <p>
                    @using (Html.BeginForm("changeCheckBoxStatusToTrue", "Home", FormMethod.Post))
                    {
                        //var id = item.LearningNumberId; <-- I tried this but it didnt seem to work?
                    <input class="btn btn-primary" id="@item.LearningNumberId" type="submit" value="Vælg" />                     
                    }                        
                </p>
            </div>
        </div>
    }

我当前的控制器:

    [HttpPost]
    public ActionResult changeCheckBoxStatusToTrue(int? id) {

        var checkboxes = db.LearningNumbers.Where(em => em.LearningNumberId == id).ToList();
        checkboxes.ForEach(em => em.setCheckBox = true);
        db.SaveChanges();

        return RedirectToAction("Index");

    }
   <input type='hidden' value="@item.LearningNumberId"/>     
   <input class="btn btn-primary" id="@item.LearningNumberId" type="submit" value="Vælg"/> 

只需添加带有值和正确名称(与操作的参数名称相同)的隐藏值即可。

您需要输入正确的名称来提交该值。 您可以使用现有的提交按钮(只需向其添加name="id"属性,并将其值设置为所需的id值),也可以添加隐藏的输入(如Steves建议的那样 )。

此外,您已将控制器代码标记为“我的当前控制器”,但是您的表单似乎指向专门在“家庭”控制器中的操作-是您想要的控制器吗?

您不需要创建多个表格

将您的视图代码替换为以下代码:

@using (Html.BeginForm())
{
   foreach (var item in Model)
   {
      <div class="col-md-12 table" style="display: table; margin: 0 0 0 0; ">
         <div class="col-md-2">
            <p><b>@Html.DisplayFor(modelItem => item.Name)</b></p>
         </div>
         <div class="col-md-2">
            <p>
               <button type="submit" value="@item.LearningNumberId" name="id">CLick!! </button>
            </p>
         </div>
      </div>
   }
}

注意:将输入type =“ submit”更改为button,然后该按钮的名称将是要绑定的按钮,该值是您的id

就那么简单!!!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM