2011-01-11 12 views
4
public class RegisterSubscription 
{ 
     public string ID { get; set; } 
     public string Description { get; set; } 
     public int SubscrSelected { get; set; } 
     public string Image { get; set; } 
     public string InfoUrl { get; set; } 
} 

private List<RegisterSubscription> activePlans = new List<RegisterSubscription>(); 

私のコントローラには私がを持っています。ViewBag.ActivePlans = activePlans;となり、ViewBagは正しいデータで埋め尽くされます。今、私の見解では、私が持っている:C#MVC3 ViewBag、foreachステートメント内でビューのリストプロパティを使用する方法は?

@foreach (var item in ViewBag.ActivePlans) 
{ 
    <li class="popupmenu" id="[email protected](item.ID)" > 
    <div> 
    @Html.Image(item.Image, new { style="border-style:none; text-align:left; vertical-align:middle; width:64px; height:64px" }) 
    </div> 
    </li> 
} 

が、私は次のエラーを取得する: 「System.Web.Mvc.HtmlHelperは」「イメージ」という名前の該当メソッドを持っていないが、その名前で拡張メソッドを持っているように見えます。拡張メソッドを動的にディスパッチすることはできません。動的引数をキャストするか、拡張メソッド構文を使用せずに拡張メソッドを呼び出すことを検討してください。

ご協力をよろしくお願い申し上げます。 事前におねがいします。

答えて

13

警告:私はMVCを何もしていないので、これは推測です。

私の推測では、ActivePlansは何らかの形で動的なので、基本的にはitemを強くタイプする必要があります。それはこのと同じくらい簡単である:それはViewBagの外にそれを得たとして、基本的にRegisterSubscriptionに各項目を投じる

@foreach (RegisterSubscription item in ViewBag.ActivePlans) 

...。その後、私はあなたが動的なものを持っているのを見ることができないので、拡張メソッドは大丈夫です。おもう。多分。風が正しいとき。

+0

Worked!どうもありがとうございました。 – zynaps

+0

私のために働いた!ありがとう! – Rob

+0

@Jon Skeet - 匿名のタイプを使用している場合はどうなりますか? Ex。 ViewBag.ActivePlans = new {Prop = "Value"} '?ビューから 'ActivePlans.Prop'にアクセスするにはどうすればオブジェクトをキャストすることができますか?可能ですか? –

関連する問題