質問

(あなたはすでにそれを見ていない場合は詳細についてはこちらを参照)私は、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」という名前のローカル変数は、このスコープ内で宣言することはできません。

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

N.B。私は限ら空き時間に、この上に読んでいますことを追加する必要がありますので、私は基本的な何かを見逃している完全に可能です。

TIA

役に立ちましたか?

解決

Html.DisplayForはあなたのビューが強く型付けされている場合にのみ使用し、それがビューに渡されたオブジェクト上で動作することができます。

だから、あなたのケースのために、あなたはそのモデルタイプ、(例えばsomething.something.View<Person>)(申し訳ありませんが、私は正確な名前を覚えていないが、これは意味をしなければならない)ようなタイプの人とあなたのビューを宣言し、次に呼び出すときにしなければなりませんHtml.DisplayFor(p => p)pはビューに渡されたモデル(人)値の値を取るます。

意味を成していた希望ます。

他のヒント

pがすでに変数名です。変数名は、現在のスコープ内で一意でなければなりません。あなたがそこに新しい変数「p」を宣言しているようしたがってdisplayForた(p => p)は、有効ではありません。コンパイラは天気を知りません。その方法は、あなたの人物P、または(P =>)変数を使用します。

だから

に名前を変更
<%= Html.DisplayFor(person => person) %>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top