簡體   English   中英

System.InvalidOperationException:提交消息時

[英]System.InvalidOperationException: When submitting a message

我收到上面的錯誤消息。 我看過其他人的問題,似乎無法查明錯誤。 這是我為控制器編寫的代碼。 這是我得到的錯誤:

System.InvalidOperationException:擁有鍵“ RecieverID”的ViewData項的類型為“ System.String”,但必須為類型的“ IEnumerable <SelectListItem>”

public ActionResult Create()
    {
        ViewBag.RecieverID = new SelectList(db.AspNetUsers, "Id", "Email");
        return View();
    }


    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create([Bind(Include = "RecieverID,TEXT")] Message message)
    {
        if (ModelState.IsValid)
        {
            var mes = new Message
            {
                SenderID = User.Identity.GetUserId(),
                DATETIMEMADE = DateTime.Now,
                TEXT = message.TEXT
            };
            db.Messages.Add(mes);
            db.SaveChanges();
            return RedirectToAction("Index");
         }
        ViewBag.ReceiverID = new SelectList(db.AspNetUsers, "Id", "Email", message.RecieverID);
        return View(message);
    }

之后,這是我創建消息的觀點:

@model MUE.Models.Message

@{
    ViewBag.Title = "Create";
}

<h2>Create</h2>

@using (Html.BeginForm()) 
{
    @Html.AntiForgeryToken()

    <div class="form-horizontal">
        <h4>Message</h4>
        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })


        <div class="form-group">
            @Html.LabelFor(model => model.RecieverID, "RecieverID", htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.DropDownList("RecieverID", null, htmlAttributes: new { @class = "form-control" })
                @Html.ValidationMessageFor(model => model.RecieverID, "", new { @class = "text-danger" })
            </div>
        </div>



        <div class="form-group">
            @Html.LabelFor(model => model.TEXT, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.TEXT, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.TEXT, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Create" class="btn btn-default"   />
            </div>
        </div>
    </div>
}

<div>
    @Html.ActionLink("Back to List", "Index")
</div>

不知道問題出在哪里,但是任何幫助將不勝感激。

首先,不要成為納粹語法,但應該是“接收者”而不是“接收者”。

其次,model.RecieverID指示單個字段,而不是集合。

“新的SelectList(...)”是集合。

請參考: MVC-設置SelectList的選定值

您可以為頁面創建一個ViewModel,例如:

public class MyViewModel
{
    public SelectList ReceiverList
    public MUE.Models.Message ReceivedMessage
}

在控制器中分配值,然后執行以下操作:

@Html.DropDownListFor(model => model.ReceivedMessage.ReceiverID, Model.ReceiverList, new { @class = "form-control" })

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM