0

誰かがこの問題を解決するのを手伝ってくれますか? カスタムビューモデルの列挙可能または単純なリストをコントローラーに渡したいです。私のコードがあります:

@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">
 }

しかし、問題は、受信モデルフィールドをデバッグするときにコントローラーで常にnullになることです。必要に応じて、ビューモデルとモデルとコントローラーをここにも投稿できます。

4

3 に答える 3

1

foreachループをループに置き換えるforとうまくいきます。

for (var i = 0; i < Model.Count; i++)  {
   @Html.HiddenFor(m => Model[i].Toode.Value)
}
于 2013-05-24T19:34:52.190 に答える
0

あなたの問題を理解しているので、 @model IEnumerable is null を取得しているということですか?

次に、コントローラーからリストを返すときに、その前に null をチェックしてから、このように返すことを確認してください

if (db.OstukorvVMs != null && db.OstukorvVMs.Count() > 0)
            {
                return View(db.OstukorvVMs.ToList());
            }
            return View();

それがうまくいくかどうかあなたのフィードバックを教えてください

于 2013-05-24T20:31:22.630 に答える