2016-03-02 49 views
-1

不知道有人能指点我正确的方向吗?通过'列表'模型进出视图

基本上我正在尝试创建一个页面,允许某人输入数据(高尔夫)的数量(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的[ “孔”] = 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( “CreateCourseHoles”,TempData的[ “孔”]);

在视图中,我可以遍历列表并显示整个数字,每个数字旁边都有一个文本框,以允许输入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

+0

首先,你不能使用一个'foreach'循环来生成收集项目的表单控件(参考[这个答案](http://stackoverflow.com/questions/30094047/html-table-to-ado-net-datatable/30094943#30094943)) )。但是你做的其他事情没有任何意义。并且不要使用'TempData',在你获得方法的时候,你初始化你的集合并将它传递给视图。 –

回答

0

的TempData并不意味着作为参数传递给您的PartialView传递。即使你不把它作为参数传递,你仍然可以访问它。我建议你这样做,而不是:

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

那么你的部分观点,你能不能让

@model IEnumerable<BGSociety.Models.CreateCourseHolesViewModel> 

和包装所有的表单中循环:

<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> 
+0

为那个花蕾欢呼,但我仍然无法看到模型中的18组数据,我只能看到第一个。当它被重新发回给控制器时,我的意思是 – SxChoc