Asp.net mvc 4 MVC通过IEnumerable<;CustomVM>;到控制器

Asp.net mvc 4 MVC通过IEnumerable<;CustomVM>;到控制器,asp.net-mvc-4,controller,viewmodel,Asp.net Mvc 4,Controller,Viewmodel,有人能帮我解决这个问题吗。我想将自定义viewmodel的ienumerable或只是简单列表传递给控制器。这是我的密码: @model IEnumerable<WebWareApp.ViewModels.OstukorvVM> @{ ViewBag.Title = "Ostukorv"; } <h2>Hetkel ostukorvis olevad tooted:</h2> @using (Html.BeginForm("Create", "Toode

有人能帮我解决这个问题吗。我想将自定义viewmodel的ienumerable或只是简单列表传递给控制器。这是我的密码:

@model IEnumerable<WebWareApp.ViewModels.OstukorvVM>
@{
ViewBag.Title = "Ostukorv";
 }
 <h2>Hetkel ostukorvis olevad tooted:</h2>
 @using (Html.BeginForm("Create", "ToodeTellimuses"))
 {  @Html.AntiForgeryToken()
<table>
<tr>
    <th>Tootenimi</th>
    <th>Tootegrupp</th>
    <th>Tootja</th>
    <th>Mõõdud</th>
    <th>Varvus</th>
    <th>Hind</th>
    <th>Vali Kogus</th>
    <th></th>
</tr>
@{if (Model != null)
  {

  foreach (var item in Model)
  {<tr>
      <td>
          @Html.DisplayFor(modelitem => item.Toode.Nimi)
          @Html.HiddenFor(modelitem => item.Toode.Nimi)
      </td>
      <td>
          @Html.DisplayFor(modelitem => item.Toode.Tootegrupp.Nimetus)
          @Html.HiddenFor(modelitem => item.Toode.Tootegrupp.Nimetus)
      </td>
      <td>
          @Html.DisplayFor(modelitem => item.Toode.Tootja)
           @Html.HiddenFor(modelitem => item.Toode.Tootja)
      </td>
      <td>
          @Html.DisplayFor(modelitem => item.Toode.Pikkus) x  @Html.DisplayFor(modelitem => item.Toode.Laius) x  @Html.DisplayFor(modelitem => item.Toode.Korgus)
       @Html.HiddenFor(modelitem => item.Toode.Pikkus)  @Html.HiddenFor(modelitem => item.Toode.Laius)   @Html.HiddenFor(modelitem => item.Toode.Korgus)
      </td>
      <td>
          @Html.DisplayFor(modelitem => item.Toode.Varvus)
            @Html.HiddenFor(modelitem => item.Toode.Varvus)
      </td>
      <td>
          @Html.DisplayFor(modelitem => item.Toode.Hind)
          @Html.HiddenFor(modelitem => item.Toode.Hind)
      </td>
      <td>
          @Html.EditorFor(modelitem => item.kogus)

      </td>
      <td>
          @String.Format("Laos olemas {0}",item.Toode.Kogus)
          @Html.HiddenFor(modelitem => item.Toode.Kogus)
         </td>
      </tr>
      }
    }}
    </table>
<input type="submit" value="Telli">
 }
@model IEnumerable
@{
ViewBag.Title=“Ostukorv”;
}
赫克尔·奥斯图科尔维斯·奥列瓦德嘟囔道:
@使用(Html.BeginForm(“创建”、“ToodeTellimuses”))
{@Html.AntiForgeryToken()
图特尼米
图特格鲁普
图加
杜德
瓦夫斯
后面的
瓦利·科格斯
@{if(Model!=null)
{
foreach(模型中的var项目)
{
@DisplayFor(modelitem=>item.Toode.Nimi)
@HiddenFor(modeleItem=>item.Toode.Nimi)
@DisplayFor(modelitem=>item.Toode.Tootegrupp.Nimetus)
@HiddenFor(modeleItem=>item.Toode.Tootegrupp.Nimetus)
@DisplayFor(modelitem=>item.Toode.Tootja)
@Html.HiddenFor(modelitem=>item.Toode.Tootja)
@Html.DisplayFor(modelitem=>item.Toode.Pikkus)x@Html.DisplayFor(modelitem=>item.Toode.Laius)x@Html.DisplayFor(modelitem=>item.Toode.Korgus)
@Html.HiddenFor(modelitem=>item.Toode.Pikkus)@Html.HiddenFor(modelitem=>item.Toode.Laius)@Html.HiddenFor(modelitem=>item.Toode.Korgus)
@DisplayFor(modelitem=>item.Toode.Varvus)
@Html.HiddenFor(modelitem=>item.Toode.Varvus)
@DisplayFor(modeleItem=>item.Toode.Hind)
@HiddenFor(modeleItem=>item.Toode.Hind)
@EditorFor(modeleItem=>item.kogus)
@String.Format(“Laos olemas{0}”,item.Toode.Kogus)
@HiddenFor(modeleItem=>item.Toode.Kogus)
}
}}
}

但问题是,在我调试控制器时,传入的模型字段始终为空。如有必要,我也可以将我的viewmodel、模型和控制器发布到此处。

foreach
循环替换为
for
循环即可

for (var i = 0; i < Model.Count; i++)  {
   @Html.HiddenFor(m => Model[i].Toode.Value)
}
for(变量i=0;iModel[i].Toode.Value)
}

据我所知,您的意思是您正在 @模型IEnumerable为空,对吗

然后确保在检查null之前从控制器返回列表 然后像这样回来

if (db.OstukorvVMs != null && db.OstukorvVMs.Count() > 0)
            {
                return View(db.OstukorvVMs.ToList());
            }
            return View();
让我知道你的反馈是否有效

好的,我理解

请尝试将模型数据转换为
IEnumerator
类型

IEnumerator<WebWareApp.ViewModels.OstukorvVM> ienut = model.GetEnumerator();

While(ienut.MoveNext())
{
  ///what ever you want to do

  console.WriteLine(ienumerator.Current.ToString());
}
IEnumerator ienut=model.GetEnumerator();
While(ienut.MoveNext())
{
///你到底想做什么
console.WriteLine(ienumerator.Current.ToString());
}
在此之后,您仍然可以将所有值放入模型中,这一次不再为null。
请发送反馈

您必须切换到for循环才能使模型绑定工作。请参见。但是,我如何访问列表中的项目?我不能再使用“modelitem=>item.Toode.Value”。似乎我也不能使用m=>m[i].Toode.Value。好吧,我试试!谢谢但是,我如何访问列表中的项目?我不能再使用“modelitem=>item.Toode.Value”。似乎我也不能使用m=>m[i].Toode.Value。我是否必须使用html.hidden for for for循环对所有属性进行赋值才能将该列表发送给控制器?我接收视图中的所有信息,并可以将其显示给用户。但是我需要将该视图中的所有信息传递给另一个控制器。您应该使用Any()而不是检查Count()>0请在获取模型的位置发布控制器,并在希望传递此模型的位置发布控制器