【问题标题】:Sequence contains no elements on mvc序列在 mvc 上不包含任何元素
【发布时间】:2016-02-19 17:23:21
【问题描述】:

我不确定为什么我得到的序列不包含任何元素我有点新的 mvc

我的控制器

 [HttpPost]
            public ActionResult DeleteAnnounce(string announce)
            {
                using (var db = new HarmonyMainServerDbContext())
                {
                    ANNOUNCEMENT annoude = db.Announcer.First(c => c.AnnounceTitle == announce);
                    db.Announcer.Remove(annoude);
                    db.SaveChanges();
                }
                return RedirectToAction("ViewAnnounce");
            }

我的观点

<div id="clientDetailsContainer">
    @using (Html.BeginForm("Announcements", "Admin", FormMethod.Post, new { id = "Announcers" }))
    {
        @Html.AntiForgeryToken()
        @Html.ValidationSummary(true)

            <div class="module-controls" style="display:block;">
               <a href="/Admin/ViewAnnounce" class="k-button module-action"><img src="../Images/src/back.png"/><span>Back to List</span></a>
               <a class="k-button module-action" id="submitSave" title="haha"><img src="../Images/src/subgrid_save.png"/><span>Save</span></a>
               <a class="k-button module-action" id="submitDelete" ><img src="../Images/src/subgrid_save.png"/><span>Delete</span></a>
            </div>

        <h2>Announcement</h2>
        @Html.HiddenFor(model => model.AnnounceID)
        <div class="client-details" style="margin-left: 50px">




             <p>
                <label class="label-ant">Announcement Title</label>
                @Html.TextBoxFor(model => model.AnnounceTitle, new {@class="k-textbox", @style="width:250px" })
                @Html.ValidationMessageFor(model => model.AnnounceTitle)
            </p>

            <p>
                <label class="label-ant">Announcement Remarks</label>
                @Html.TextBoxFor(model => model.AnnounceRemarks, new {@class="k-textbox", @style="width:250px" })
                @Html.ValidationMessageFor(model => model.AnnounceRemarks)
            </p>

            <p>
                <label class="label-ant">Announce Link</label>
                @Html.TextBoxFor(model => model.AnnounceLink, new {@class="k-textbox", @style="width:250px" })
                @Html.ValidationMessageFor(model => model.AnnounceLink)
            </p>

        </div>
    }
   <script>
       $("#submitSave").click(function () {
           $("#Announcers").submit();
       });
       $("#submitDelete").click(function () {
           $("#Announcers").attr({
               "action" : "/Admin/DeleteAnnounce",
           });
       });
   </script>

</div>

【问题讨论】:

  • 因为您的参数announcenull(您查看永远不会回发任何值)

标签: c# asp.net-mvc-4


【解决方案1】:

在集合中,您需要了解差异的方法很少

  1. First - 表示如果没有返回任何内容,它将抛出异常, 但它允许集合不止于第一个
  2. Single - 表示只获取一项,因此如果集合匹配多于 一个或一个你都会得到例外,这是一种“约束”
  3. FirstOrDefault - 表示集合可以有多个匹配项或没有匹配项
  4. SingleOrDefault - 集合应该只有一个或非匹配项的项

【讨论】:

    【解决方案2】:

    这是因为您使用的是 First()。如果没有具有匹配标题的 Announcer,则会引发异常。

    https://msdn.microsoft.com/library/bb291976%28v=vs.100%29.aspx

    【讨论】:

    • TowelMonitor 的底线:如果您的查询必须支持“不匹配”的情况,请改用 FirstOrDefault
    猜你喜欢
    • 2012-10-29
    • 2014-06-25
    • 2015-09-04
    • 1970-01-01
    • 2015-02-19
    • 1970-01-01
    • 2016-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多