0

MVC4 を使用してフォームを送信しようとしていますが、送信後にエラーが発生する理由がわかりません。関連するすべてのコードと、表示されているエラーを以下に貼り付けました。

エラー:

The ViewData item that has the key 'Group' is of type 'System.String' but must be of type 'IEnumerable<SelectListItem>'.

コントローラ:

[HttpGet]
public ActionResult CreateRole()
{
var RM = new myModel();
RM.Groups = RM.InitializeGroupList();
return View(RM);
}

[HttpPost]
public ActionResult Myfunction(myModel model)

if (ModelState.IsValid)
{
//Execute Update
}

モデル:

[Required]
[Display(Name = "Group")]
public string Group { get; set; }


public IEnumerable<SelectListItem> Groups;  

public IEnumerable<SelectListItem> InitializeGroupList()
    {
        List<SelectListItem> topOfList = new List<SelectListItem>
        {
            new SelectListItem { Value = string.Empty, Text = "Category" },
            new SelectListItem { Value = "Administrator", Text = "Administrator" },
            new SelectListItem { Value = "Partner", Text = "Partner" },
            new SelectListItem { Value = "Internal", Text = "Internal" }
        };
        //IEnumerable<SelectListItem> list = db.GetRoleList(topOfList);
        IEnumerable<SelectListItem> list = topOfList;
        return new SelectList(list, "Value", "Text");
    }

[Required]
[Display(Name = "Group")]
public string Group { get; set; }


public IEnumerable<SelectListItem> Groups;

意見:

    @Html.DropDownListFor(model => model.Group, Model.Groups)
4

1 に答える 1

1

これは、HttpPost コントローラー アクションで、同じビューをレンダリングしたときにビュー モデルに Groups プロパティを設定するのを忘れたためです。

RM.Groups = RM.InitializeGroupList();

フォームを送信するときに、DropDownList は選択した値のみを送信することを忘れないでください。同じビューを再表示する場合は、GET アクションで行ったのと同じ方法で他の値を取得する必要があります。

于 2013-10-25T17:46:40.553 に答える