2013-07-19 10 views
9

基本的には私は腹を立てたことによるテストをしています。 return View(list_aを使用することによりは@モデルと@モデルの間で異なります

)コントローラで、私は私のビューにリストを渡されたが、私のビュー]ページで、コードは次のようである:

@{ 
    ViewBag.Title = "KYC_Home"; 
} 
@using UniBlue.Models; 
@model UniBlue.Models.KYC 
... 
@foreach(KYC a in Model) 
... 

例外があるだろうと言う:

CS1579: foreach statement cannot operate on variables of type 'UniBlue.Models.KYC' because 'UniBlue.Models.KYC' does not contain a public definition for 'GetEnumerator' 

しかし、 、コードを に変更したとき@Model ページは良く見えますが、タイトルには次のように表示されます:

System.Collections.Generic.List`1[UniBlue.Models.KYC] UniBlue.Models.KYC 

通常のHTMLテキスト

誰にこのようなことが起こったのか誰に教えてもらえますか?奇妙なタイトル行を削除するにはどうすればよいですか?

答えて

18

1つのモデルであることを強いタイプを宣言するために使用されているようご参照変数の型を示し、他はモデル自体にアクセスするために使用されます。

次のように、モデルに使用される強い型式はUniBlue.Models.KYCです。

@model UniBlue.Models.KYC 

これは基本的に '変数' Modelをその型として宣言します。これは、次の操作を行うに似てます:

UniBlue.Models.KYC Model; 

Model@modelがタイプModelがどうなるかと言って、キーワードで、変数です。

ModelをKYCとして宣言していますが、KYCは列挙できません。あなたはそれがそうでない場合IEnumerable<UniBlue.Models.KYC>を期待してforeachでそれを使用しています。

モデルが本当にリストである場合には、

@model IEnumerable<UniBlue.Models.KYC> 
+0

良い点を使用します!モデルUniBlue.Models.KYC、モデル自体に割り当てられた値はありません。 – LifeScript

+0

私はあなたの質問を理解していません。 –

+0

"モデルUniBlue.Models.KYC"を書くのではなく、 "UniBlue.Models.KYC Model"を使用して正常に実行され、うまく表示されるため、例外が発生しない理由がわかりませんリストデータ – LifeScript

6

@modelあなたは@Model

@model string 

@Model.ToUpper(); // works as @Model is of type string