2017-04-12 11 views
-2

コードでわかるように、私は2つのクラスをRegistratieViewModelに持っています。私のビューモデルを私の視点に渡すと、Reizigersではなく、Selectieクラスだけが認識されますか?誰かが私を助けることができますか? 私はエラーを取得する:「CS1061 C#がの定義が含まれていないとタイプの最初の引数を受け入れ何の拡張メソッドが見つかりませんでした(?あなたがusingディレクティブまたはアセンブリ参照が不足している」)ビューはビューモデルのクラスを認識しません

のViewModel

public class RegistratieViewModel 
    { 
     public SelectieViewModel Selectie { get; set; } 

     public List<ReizigersViewModel> Reizigers { get; set; } 

     public RegistratieViewModel() 
     { 
      Reizigers = new List<ReizigersViewModel>(); 
     } 
    } 

    public class SelectieViewModel 
    { 
     public SelectList VanStad { get; set; } 

     public SelectList NaarStad { get; set; } 

     public bool Klasse { get; set; } 

     public DateTime DatumHeenReis { get; set; } 

     public DateTime DatumTerugReis { get; set; } 

     public int AantalReizigers { get; set; } 
    } 

    public class ReizigersViewModel 
    { 
     public string Voornaam { get; set; } 

     public string Familienaam { get; set; } 
    } 

コントローラ

// GET: Hotels/Index 
    public ActionResult Index(RegistratieViewModel registratie) 
    { 
     stedenServices = new StedenServices(); 
     RegistratieViewModel registratieviewmodel = new RegistratieViewModel(); 
     registratieviewmodel.Selectie.VanStad = new SelectList(stedenServices.All(), "StadID", "Stad"); 
     registratieviewmodel.Selectie.NaarStad = new SelectList(stedenServices.All(), "StadID", "Stad"); 
     return View(registratieviewmodel); 
    } 

ビュー

@model Treinreizen.Models.ViewModels.RegistratieViewModel 

<div class="form-horizontal"> 
    <h4>RegistratieViewModel</h4> 
    <hr /> 
    @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 

    <div class="form-group"> 
     @Html.LabelFor(model => model.Reizigers.Voornaam, htmlAttributes: new { @class = "control-label col-md-2" }) 
     <div class="col-md-10"> 
      @Html.EditorFor(model => model.Reizigers.Voornaam, new { htmlAttributes = new { @class = "form-control" } }) 
      @Html.ValidationMessageFor(model => model.Reizigers.Voornaam, "", new { @class = "text-danger" }) 
     </div> 
    </div> 

    <div class="form-group"> 
     @Html.LabelFor(model => model.Reizigers.Familienaam, htmlAttributes: new { @class = "control-label col-md-2" }) 
     <div class="col-md-10"> 
      @Html.EditorFor(model => model.Reizigers.Familienaam, new { htmlAttributes = new { @class = "form-control" } }) 
      @Html.ValidationMessageFor(model => model.Reizigers.Familienaam, "", new { @class = "text-danger" }) 
     </div> 
    </div> 
</div> 
+1

'model.Reizigers'は' ReizigersViewModel'ではなく 'List'です。さらに、Controllerメソッドのどの時点でも、このリストに何も追加していないようです。 – user1935361

+0

完全な例外を投稿してください。皮肉なことに、あなたが省略した部分は、何が欠けているかを詳述しているので、最も重要です。一般に、これは型にないメソッドを呼び出すときに発生する例外です。あなたのビューモデルや他のクラスとはまったく関係ありません。この例外があなたのコード内でどこから呼び出されているのかも明確ではありません。 –

+0

@ user1935361これを解決するにはどうすればよいですか?目的は、AantalReizigers intのおかげで誰が何人の旅行者が来るかを言わなければならないということです。誰かが番号をつけたら、フィールドは自動的に "Voornaam"と "Familienaam"に追加されます。そして、与えられる名前は、リストに入れられます。 – KevinN

答えて

2

List<ReizigersViewModel>にあるReizigersViewModelのプロパティを参照しているという問題があります。リストにはそのプロパティはなく、そのリストの1つの項目だけが表示されます。コレクション全体に対して単一のフィールドセットを作成することはできません。コレクションを繰り返す必要があります。

@for (var i = 0; i < Model.Reizigers.Count(); i++) 
{ 
    <div class="form-group"> 
     @Html.LabelFor(model => model.Reizigers[i].Voornaam, htmlAttributes: new { @class = "control-label col-md-2" }) 
     <div class="col-md-10"> 
      @Html.EditorFor(model => model.Reizigers[i].Voornaam, new { htmlAttributes = new { @class = "form-control" } }) 
      @Html.ValidationMessageFor(model => model.Reizigers[i].Voornaam, "", new { @class = "text-danger" }) 
     </div> 
    </div> 

    <div class="form-group"> 
     @Html.LabelFor(model => model.Reizigers[i].Familienaam, htmlAttributes: new { @class = "control-label col-md-2" }) 
     <div class="col-md-10"> 
      @Html.EditorFor(model => model.Reizigers[i].Familienaam, new { htmlAttributes = new { @class = "form-control" } }) 
      @Html.ValidationMessageFor(model => model.Reizigers[i].Familienaam, "", new { @class = "text-danger" }) 
     </div> 
    </div> 
} 

HtmlHelper式でインデックス構文を使用することに注意してください。現在、リスト全体ではなく、List<ReizigersViewModel>の1つのアイテム、つまりReizigersViewModelを参照しています。

+0

ありがとうございます。私は前のコメントで説明したように、入力フィールド "AantalReizigers"を使用して多くの旅行者を与え、 "AantalReizigers"のおかげで与えられたフィールド "Voornaam"と "Familienaam"の数を自動的に追加します。私の質問は今です:ユーザーが与えるすべての出力は、List に追加されますか? – KevinN

+1

@KevinN、あなたの質問は正しく答えられました。別の質問がある場合は、別の質問をしてください。 –

関連する問題