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

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – @ Html.HiddenFor返回null值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图将表的结果返回给控制器以进行进一步操作.一旦返回到控制器,该值显示为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.

原文链接:https://www.f2er.com/aspnet/251502.html

猜你在找的asp.Net相关文章