4

私は ASP.NET MVC を初めて使用します。私の質問について何か助けていただければ幸いです。私はすでにこのトピックについて多くの調査を行っています (明らかに十分ではありません)。ドロップダウン リストをテーブルの特定の列にバインドし、それをビューにレンダリングする必要があります。コントローラーでテーブルを取得するためのクエリが既にあります。

  public ActionResult SelectAccountEmail()
        {
            var queryAccountEmail = (from AccountEmail in db.UserBases select AccountEmail) 
            var selectItems = new SelectList(queryAccountEmail);
            return View(selectItems); 
        }

クエリをビューのドロップダウンリストにバインドするときに迷子になります。

@model RecordUploaderMVC4.Models.UserBase

@{
    ViewBag.Title = "SelectAccountEmail";
}

<h2>SelectAccountEmail</h2>

@Html.LabelFor(model => model.AccountEmail); 

@Html.DropDownList(Model.AccountEmail);  
@Html.ValidationMessageFor(model => model.AccountEmail); 

<input /type="submit" value="Submit">

実行すると、次のエラーが表示されます。

Server Error in '/' Application.
--------------------------------------------------------------------------------


The model item passed into the dictionary is of type 'System.Web.Mvc.SelectList', but this dictionary requires a model item of type 'RecordUploaderMVC4.Models.UserBase'. 

どんな助けでも大歓迎です。

前もって感謝します。

4

2 に答える 2

3

間違っていることはほとんどありません。まず、モデルを変更して次のプロパティを追加します (ビューを見ると、それはRecordUploaderMVC4.Models.UserBaseです)。

public class UserBase
{
    public string AccountEmail { get; set; }
    public SelectList Emails { get; set; }
    //rest of your model
}

次に、コントローラーでモデルを適切に構築します。

 public ActionResult SelectAccountEmail()
 {
     UserBase model = new UserBase();
     var queryAccountEmail = (from AccountEmail in db.UserBases select AccountEmail) 
     model.Emails = new SelectList(queryAccountEmail);

     return View(model); 
 }

次に、ビューで次のことができます。

@Html.LabelFor(model => model.AccountEmail)

@Html.DropDownListFor(model => model.AccountEmail, Model.Emails)
@Html.ValidationMessageFor(model => model.AccountEmail)
于 2013-03-28T17:19:51.970 に答える
0

ステップ 1: まず、ListofAccountEmail を保持するために、このようなモデルを作成します

public class AccountEmailViewModel
    {

        public int AccountEmailId { get; set; }
        public string AccountEmailDescription { get; set; }
    }

ステップ 2: モデル クラスを作成する

 public class UserBaseViewModel
    {    


                public IEnumerable<SelectListItem>  AccountEmail { get; set; }
                public string AccountEmail { get; set; }
    }

ステップ 3 :

コントローラー内

            [HttppGet]
            public ActionResult SelectAccountEmail()
            {
                var EmailAccounts = (from AccountEmail in db.UserBases select AccountEmail)

               UserBase userbaseViewModel = new UserBase
                {
                    AccountEmail = EmailAccounts.Select(x => new SelectListItem
                  {
                      Text = x.AccountEmailDescription,
                      Value = Convert.ToString(x.AccountEmailId)
                  }).ToList()

                };
                return View(userbaseViewModel);
            }

ステップ 4 : イン ビュー

 @model RecordUploaderMVC4.Models.UserBase
    @{
       ViewBag.Title = "SelectAccountEmail";
    }
    <h2>SelectAccountEmail</h2>
    @Html.ValidationSummary()
    <h2>SelectAccountEmail</h2>
                            @Html.LabelFor(model => model.AccountEmail )

                                @Html.DropDownListFor(x => x.AccountEmailId, Model.AccountEmail, "Please Select", "")
                            </div>
    <input /type="submit" value="Submit">
于 2013-03-28T17:43:26.860 に答える