2

ASP.NET MVCの新しいバージョンを調べています(まだ見ていない場合は、ここを参照してください)。オブジェクトのコンテンツを表示するのにかなり基本的な問題があります。

私のコントロールには、Personのビューに渡すタイプのオブジェクトがありますViewData.Model。これまでのところすべて順調で、表示の準備ができたビューでオブジェクトを抽出できます。しかし、私が得られないHtml.DisplayFor()のは、データを画面に表示するためにメソッドを呼び出す必要がある方法です。私は次のことを試しました...

<% 
    MVC2test.Models.Person p = ViewData.Model as MVC2test.Models.Person;
%>
// snip
<%= Html.DisplayFor(p => p) %>

しかし、次のメッセージが表示されます。

CS0136:'p'という名前のローカル変数は、'p'とは異なる意味を与えるため、このスコープでは宣言できません。これは、'親または現在の'スコープで他の何かを示すためにすでに使用されています。

私はこれが私がすべきことではないことを知っています-変数を再定義するとこのエラーが発生することは知っていますが、コントローラーからオブジェクトにアクセスする方法がわかりません。だから私の質問は、そのプロパティを表示するためにオブジェクトをビューに渡すにはどうすればよいですか?

NB私は限られた空き時間にこれを読んでいることを付け加えなければなりません、それで私が何か基本的なことを逃した可能性は完全にあります。

TIA

4

2 に答える 2

6

Html.DisplayForビューが厳密に型指定されている場合にのみ使用でき、ビューに渡されたオブジェクトで機能します。

したがって、あなたのケースでは、型 Person をモデル型としてビューを宣言する必要があります (例: something.something.View<Person>) (申し訳ありませんが、正確な名前は覚えていませんが、これは意味があるはずですHtml.DisplayFor(p => p)) p。渡されたモデル (Person) 値の値をビューに。

それが理にかなっていることを願っています。

于 2009-09-23T15:49:59.077 に答える
1

pはすでに変数名です。変数名は、現在のスコープ全体で一意である必要があります。したがって、そこで新しい変数'p'を宣言しているため、displayFor(p => p)は無効です。そうすれば、コンパイラは、Person pを使用するか、(p =>)変数を使用するかを認識しません。

名前を変更するだけです

<%= Html.DisplayFor(person => person) %>
于 2009-09-23T15:14:20.800 に答える