加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – @ Html.HiddenFor返回null值

发布时间:2020-12-16 00:07:33 所属栏目:asp.Net 来源:网络整理
导读:我试图将表的结果返回给控制器以进行进一步操作.一旦返回到控制器,该值显示为null.在过去,我已经能够使用@ Html.HiddenFor来返回值,但它似乎在这个实例中不起作用.不知道我在这里做错了什么.任何帮助是极大的赞赏. @model IEnumerableProject.Models.Item@{
我试图将表的结果返回给控制器以进行进一步操作.一旦返回到控制器,该值显示为null.在过去,我已经能够使用@ Html.HiddenFor来返回值,但它似乎在这个实例中不起作用.不知道我在这里做错了什么.任何帮助是极大的赞赏.
@model IEnumerable<Project.Models.Item>
@{
    ViewBag.Title = "Welcome to The Project";
 }


@using (Html.BeginForm("UpdateQuality","Home",new { ReturnUrl = ViewBag.ReturnUrl },FormMethod.Post,new { @class = "form-horizontal",role = "form" }))
{
    <div class="row">
        <div class="form-group">
            <table class="table table-bordered">
                <tr>
                    <th>@Html.DisplayNameFor(m => m.Name)</th>
                    <th>@Html.DisplayNameFor(m => m.SellIn)</th>
                    <th>@Html.DisplayNameFor(m => m.Quality)</th>
                </tr>
                @for (int i = 0; i < Model.Count(); i++)
                {
                    <tr>
                        <td>@Html.DisplayFor(m => m.ElementAt(i).Name)</td>
                        <td>@Html.DisplayFor(m => m.ElementAt(i).SellIn)</td>
                        <td>@Html.DisplayFor(m => m.ElementAt(i).Quality)</td>

                        @Html.HiddenFor(m => m.ElementAt(i).Name)
                        @Html.HiddenFor(m => m.ElementAt(i).SellIn)
                        @Html.HiddenFor(m => m.ElementAt(i).Quality)

                    </tr>
                }
            </table>
            <div class="form-group">
                <div style="margin-top: 50px">
                    <input type="submit" class="btn btn-primary" value="Advance Day"/>
                </div>
            </div>
        </div>
    </div>
}

这是控制器返回null.

public ActionResult UpdateQuality(List<Item> Items )
{
    return View("Index",(object)Items);
}

解决方法

您不能在生成表单控件的HtmlHelper方法中使用ElementAt()(查看生成的name属性 – 它与您的模型不匹配).

将模型改变为IList< T>

@model List<Project.Models.Item>

并使用for循环

@for (int i = 0; i < Model.Count; i++)
{
    ....
    @Html.HiddenFor(m => m.[i].Name)
    ....

或更改使用自定义EditorTemplate for typeof Item,并在主视图中,使用@ Html.EditorFor(m => m)为集合中的每个项生成正确的html.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读