通过'列表'模型进出视图

时间:2016-03-02 22:01:45

标签: c# asp.net-mvc

不知道有人能指出我正确的方向吗?

基本上我试图创建一个允许某人在数十(18)个洞中输入数据(高尔夫球)的页面,基本上我不确定它是如何完成的。

在模型中,我创建了以下内容:

namespace BGSociety.Models
{
public class CreateCourseHolesViewModel
{
    public int holeNumber { get; set; }
    public int par { get; set; }
    public int si { get; set; }
    public int distance { get; set; }
}

}

在控制器的索引事件中我得到了:

TempData [" holes"] = getHoles();

    protected List<CreateCourseHolesViewModel> getHoles()
    {
        var holes = new List<CreateCourseHolesViewModel>();

        for (int i =1; i < 19; i++)
        {
            holes.Add(new CreateCourseHolesViewModel { holeNumber = i });
        }
        return holes;

    }

我将此传递到视图中:

返回PartialView(&#34; CreateCourseHoles&#34;,TempData [&#34; holes&#34;]);

在视图中,我可以遍历列表并显示整个数字,每个数字旁边都有一个文本框,以便输入par,si和distance。

    var zHoles = TempData["holes"] as IEnumerable<BGSociety.Models.CreateCourseHolesViewModel>;
    foreach (var hole in zHoles)
    {
        <div class="row">
            <div class="col-sm-1">
                <p>@hole.holeNumber</p>
            </div>
            <div class="col-sm-6">
                <div class="form-group">
                    <div class="col-xs-12">
                        @Html.ValidationMessageFor(m => hole.par)
                        @Html.TextBox("par", TempData["par"], new { @class = "form-control", placeholder = "Par", name = "Par" })
                    </div>
                </div> 
            </div>
        </div>
    }

但我无法解决如何将此填充列表传回控制器以便我将数据输入数据库。

我很有可能以错误的方式解决这个问题(!)但是如果有人可以花几分钟时间来帮助那将是非常了不起的!

谢谢, SX

1 个答案:

答案 0 :(得分:0)

TempData不打算作为参数传递给PartialView。即使你不把它作为参数传递;你仍然可以访问它。我建议你这样做:

return PartialView("CreateCourseHoles", getHoles());

那么您可以使用部分视图

@model IEnumerable<BGSociety.Models.CreateCourseHolesViewModel>

并以表格形式包装所有for循环:

 <form method="post" action="wherever you want to post it to">

foreach (var hole in Model)
    {
        <div class="row">
            <div class="col-sm-1">
                <p>@hole.holeNumber</p>
            </div>
            <div class="col-sm-6">
                <div class="form-group">
                    <div class="col-xs-12">
                        @Html.ValidationMessageFor(m => hole.par)
                        @Html.TextBox("par", TempData["par"], new { @class = "form-control", placeholder = "Par", name = "Par" })
                    </div>
                </div> 
            </div>
        </div>
    }

</form>