1

MVC4 Webアプリケーションに部分ビューを追加しようとしていますが、次の例外が発生します。

ディクショナリに渡されるモデルアイテムのタイプは「...Meeting」ですが、このディクショナリにはタイプ「System.Collections.Generic.List`1[...UserProfile]」のモデルアイテムが必要です。

私がこれまでにしたこと:

  1. 私は自分のコントローラーにこの関数を追加しました:
public PartialViewResult GetUsers()
        {
            var usersList = (from users in db.Users select users).ToList();
            return PartialView(usersList);
        }
  1. パリタルビューを追加しました:
@model List<UserProfile>
@{
 <select id="Meeting_SetToUser" name="Meeting.SetToUser">
        @foreach (var item in Model)
        {
            <option value="@item.UserId">@item.FirstName @item.LastName</option>
        }
    </select>
}
  1. 私は自分の視点から部分ビューを呼び出しました:
@Html.Partial("GetUsers")

私が何か間違ったことをしているのかどうか教えていただけますか?

ありがとうございました!

4

2 に答える 2

2

を使用すると、GetUsersアクションが呼び出されないようですHtml.Partial。多分あなたは子アクションを使いたいと思ったでしょう:

@Html.Action("GetUsers")

following article の違いをよりよく理解するには、をチェックアウトしてください。Html.PartialHtml.Action

foreachまた、ヘルパーを使用する代わりにループを使用してドロップダウンリストを生成することHtml.DropDownListは非常に不適切なようです。たぶん、あなたはこのヘルパーを使いたいと思ったでしょう?

@model List<...UserProfile>
@Html.DropDown(
    "Meeting.SetToUser", 
    new SelectList(
        Model.Select(x => new 
        { 
            UserId = x.UserId, 
            FullName = string.Format("{0} {1}", x.FirstName, x.LastName) }
        ),
        "UserId", 
        "FullName"
   )
)

また、ドメインモデルをビューに渡すのではなく、ビューモデルを使用することを強くお勧めします。

于 2012-10-28T16:01:49.260 に答える
0

詳しくは GetUsers() アクションを参照してください。List 型のモデルを部分ビューに渡していますが、部分ビューは List<...UserProfile> 型を受け入れます。

解決策は、部分ビューが受け入れている適切なタイプを送信することです。

于 2012-10-28T15:37:11.080 に答える