c# - 如何修改表中的数据
问题描述
在我的项目中,我正在尝试编辑数据。用户只应修改一个属性(状态),如果模型有效,则保存数据并将电子邮件发送到 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é.'
解决方案
尝试从动作中删除绑定
public ActionResult GérantRéservationApprove ( Reservation reserv)
推荐阅读
- python - 带有循环的python中的套接字问题
- javascript - Javascript Rest API在for循环中获取调用未为元素设置值
- python - Pandas:如何循环并删除一列有单个条目的行
- c# - 为什么克隆的 UIElement 或 FrameworkElement 会丢失样式
- android - 如何在 Flutter dart 上使用 dwolla api
- c# - 选择 Cosmos DB 文档时展平对象
- c# - 急切加载多个级别错误:“包含属性 lambda 表达式无效”
- java - 布尔值是否自动装箱到同一个实例?
- spring-boot - 在 DefaultMessageListenerContainer 中配置 sessionAcknowledgeMode
- javascript - Chrome 扩展在网页中寻找资源,而不是扩展