首页 > 解决方案 > 如何修改表中的数据

问题描述

在我的项目中,我正在尝试编辑数据。用户只应修改一个属性(状态),如果模型有效,则保存数据并将电子邮件发送到 clientMail 中的电子邮件地址。

这是我的控制器

[HttpPost]
        public ActionResult GérantRéservationApprove([Bind(Include = "reservation_id, date, nb_persons, RestoId")] Reservation reserv)
        {
            if (ModelState.IsValid)
            {
                db.Entry(reserv).State = EntityState.Modified;
                if (reserv.state == false)
                {
                    string objet = "Réservation indisponible";
                    string contenu = "Bonjour cher client. Nous venons par ce courriel vous informé que nous ne pouvons donné suite à votre réservation prévu sur le " + reserv.date +". Nous vous prions de nous excuser.";
                    WebMail.Send(reserv.ClientMail, objet, contenu, null, null, null, false, null, null, null, null, null, null);

                    db.SaveChanges();
                    return RedirectToAction("GérantRéservation", "Admin");
                }
                else
                {
                    
                    string objet = "Confirmation de réservation";
                    string contenu = "Bonjour cher client. Nous venons par ce courriel vous informé que votre réservation prévu sur le " + reserv.date +" a été approuvé. Merci d'avoir choisi notre établissement.";
                    WebMail.Send(reserv.ClientMail, objet, contenu, null, null, null, false, null, null, null, null, null, null);

                    db.SaveChanges();
                    return RedirectToAction("GérantRéservation", "Admin");
                }
            }
            return RedirectToAction("GérantRéservation", "Admin");
        }

这是视图

@model MiabéResto.Models.Reservation

@{
    ViewBag.Title = "Modifier une réservation";
    Layout = "~/Views/Shared/_Layout.cshtml";
    
}

<h2>Modification de la réservation</h2>

@using (Html.BeginForm("GérantRéservationApprove","Admin", FormMethod.Post))
{
    @Html.AntiForgeryToken()
    
        <div class="form-horizontal">
            <h4>Reservation</h4>
            <hr />
            @Html.ValidationSummary(true, "", new { @class = "text-danger" })
            @Html.HiddenFor(model => model.reservation_id)
            <div class="form-group">
                @Html.LabelFor(model => model.date, htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.EditorFor(model => model.date, new { htmlAttributes = new { @class = "form-control", @readonly = "readonly" } })
                    @Html.ValidationMessageFor(model => model.date, "", new { @class = "text-danger" })
                </div>
            </div>

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

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

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

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

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

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

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

<div>
    @Html.ActionLink("Retour", "GérantRéservation","Admin")
</div>

只有状态属性不是只读的,但是当它在视图中修改时,它的值不会改变。这是第一个问题。第二个是这样的:执行给出这个异常

System.InvalidOperationException : 'Un destinataire doit être spécifié.'

标签: c#asp.net-mvc

解决方案


尝试从动作中删除绑定

 public ActionResult GérantRéservationApprove ( Reservation reserv)

推荐阅读