0

リストを作成してビューに戻すアクションがあります。

public ActionResult GetCustomers()
    {
        return PartialView("~/Views/Shared/DisplayTemplates/Customers.cshtml", UserQueries.GetCustomers(SiteInfo.Current.Id));
    }

そして、「〜/ Views / Shared / DisplayTemplates / Customers.cshtml」ビューには、次のものがあります。

@model IEnumerable<FishEye.Models.CustomerModel>
@Html.DisplayForModel("Customer")

次に、「〜/ Views / Shared / DisplayTemplates/Customer.cshtml」ビューに次のように表示されます。

@model FishEye.Models.CustomerModel
@Model.Profile.FirstName

エラーが発生しました:

The model item passed into the dictionary is of type System.Collections.Generic.List`1[Models.CustomerModel]', but this dictionary requires a model item of type 'Models.CustomerModel'.

Customers.cshtmlのコレクション内のすべてのアイテムのCustomer.cshtmlを表示するべきではありませんか?

ヘルプ!

4

2 に答える 2

1

あなたの見解は単一のモデルを期待しています:

@model FishEye.Models.CustomerModel  // <--- Just one of me

あなたはそれに匿名のリストを渡します:

... , UserQueries.GetCustomers(SiteInfo.Current.Id)  // <--- Many of me

ビューを変更してリストを受け入れるか、リスト内のどのアイテムを使用するかを決定してから、ビューに渡す必要があります。1つのアイテムを含むリストは引き続きリストであり、ビューは推測できません。

于 2012-05-27T00:29:46.097 に答える
1

なぜこのような部分ビューと呼んでいるのかわかりません。顧客固有のビューの場合は、Views/Customerフォルダーの下に配置してみませんか?ASP.NETMVCはより多くの規則であることを忘れないでください。だから私はそれを単純に保つために(自分自身を構成するために絶対に必要でない限り)常に慣習に固執するでしょう。

この状況に対処するために、私はこのようにします、

aCustomerおよびCustomerListmodel/Videmodel

public class CustomerList
{
    public List<Customer> Customers { get; set; }
    //Other Properties as you wish also
}

public class Customer
{
    public string Name { get; set; }
}

そして、アクションメソッドでは、CustomerListクラスのオブジェクトを返します

CustomerList customerList = new CustomerList();
customerList.Customers = new List<Customer>();
customerList.Customers.Add(new Customer { Name = "Malibu" });
// you may replace the above manual adding with a db call.
return View("CustomerList", customerList);

これで、フォルダCustomerList.cshtmlの下にというビューが表示されます。Views/YourControllerName/そのビューは次のようになります

@model CustomerList
<p>List of Customers</p>
@Html.DisplayFor(x=>x.Customers)

このコンテンツでsのCustomer.cshtml下に呼び出されたビューを持っているViews/Shared/DisplayTemplate

@model Customer
<h2>@Model.Name</h2>

これにより、目的の出力が得られます。

于 2012-05-27T01:11:52.600 に答える