MVC CRUD:从直接创建到更新
MVC CRUD: going from create directly to udpate
我的流程比较简单:
post正在编辑一个项目 -> post 的预览 -> 选项 A:编辑 |选项 B:发布
一切都按预期工作,尽可能使用标准 CRUD。但是,在项目被 posted 的情况下,然后要预览屏幕并且用户想要发布(这实际上只是在数据库中将 bool 从 false 更改为 true)我收到以下错误留言:
Validation failed for one or more entities. See
'EntityValidationErrors' property for more details. Description: An
unhandled exception occurred during the execution of the current web
request. Please review the stack trace for more information about the
error and where it originated in the code.
Exception Details:
System.Data.Entity.Validation.DbEntityValidationException: Validation
failed for one or more entities. See 'EntityValidationErrors' property
for more details.
在标准 CRUD 中,我在编辑时调用项目的 ID,但是当从创建移动到预览时,似乎没有逻辑方法来调用 ID,因为它刚刚被创建。但是,由于中间有额外的步骤,我认为问题在于我在没有在预览视图中指定 ID 的情况下尝试进行编辑。
这里是我的发布部分的控制器代码:
//POST: /errandom/errandPreview
public ActionResult ConfirmErrand()
{
// define variables for reuse
var userID = User.Identity.GetUserId();
DateTime nowUTC = DateTime.Now.ToUniversalTime();
DateTime nowLocal = DateTime.Now.ToLocalTime();
// define errand
var errand = new errands
{
// form
Published = true
};
// save errand to DB
ERRANDOM.Entry(errand).State = EntityState.Modified;
ERRANDOM.SaveChanges();
return RedirectToAction("Index");
}
加上完整性视图:
<section id="errandPreview" class="manageForm">
@using (Html.BeginForm("errandPreviewForm", "errandom", FormMethod.Post, new { @id = "errandPreviewForm", @class = "form-horizontal", @role = "form" }))
{
@Html.AntiForgeryToken()
@Html.HiddenFor(m => m.LatitudePosted, new { @id = "errandPreviewLatitudePosted", @class = "userActivity" })
@Html.HiddenFor(m => m.LongitudePosted, new { @id = "errandPreviewLongitudePosted", @class = "userActivity" })
@Html.HiddenFor(m => m.LocationPosted, new { @id = "errandPreviewUserLocationPosted", @class = "userActivity" })
@Html.HiddenFor(m => m.ID, new { @id = "errandPreviewID", @class = "errandPreviewID" })
<div id="errandPreviewErrandSection" class="manageSection">
<p id="errandPreviewErrandSectionTitle" class="manageSectionTitle">
@Html.DisplayFor(m => m.Title)
</p>
<div id="errandPreviewCategoryArea" class="manageArea row">
<div id="errandPreviewDateTimePostedDisplayName" class="errandomDisplayName col-xs-offset-1 col-xs-10 col-sm-offset-1 col-sm-10 col-md-offset-1 col-md-10 col-lg-offset-1 col-lg-10">
@Html.DisplayNameFor(m => m.DateTimePosted)
</div>
<div id="errandPreviewDateTimePostedDisplay" class="errandomDisplay col-xs-offset-1 col-xs-10 col-sm-offset-1 col-sm-10 col-md-offset-1 col-md-10 col-lg-offset-1 col-lg-10">
@Html.DisplayFor(m => m.DateTimePosted)
</div>
<div id="errandPreviewCategoryDisplayName" class="errandomDisplayName col-xs-offset-1 col-xs-5 col-sm-offset-1 col-sm-5 col-md-offset-1 col-md-5 col-lg-offset-1 col-lg-5">
@Html.DisplayNameFor(m => m.Category)
</div>
<div id="errandPreviewSubCategoryDisplayName" class="errandomDisplayName col-xs-5 col-sm-5 col-md-5 col-lg-5">
@Html.DisplayNameFor(m => m.SubCategory)
</div>
<div id="errandPreviewCategoryDisplay" class="errandomDisplay col-xs-offset-1 col-xs-5 col-sm-offset-1 col-sm-5 col-md-offset-1 col-md-5 col-lg-offset-1 col-lg-5">
@Html.DisplayFor(m => m.Category)
</div>
<div id="errandPreviewSubCategoryDisplay" class="errandomDisplay col-xs-5 col-sm-5 col-md-5 col-lg-5">
@Html.DisplayFor(m => m.SubCategory)
</div>
</div>
<hr />
<div id="errandPreviewDescriptionArea" class="manageArea row">
<div id="errandPreviewPictureDisplay" class="errandomDisplay col-xs-offset-1 col-xs-10 col-sm-offset-1 col-sm-3 col-md-offset-1 col-md-3 col-lg-offset-1 col-lg-3">
<img id="errandPreviewPicture" class="errandPreviewPicture" src="@Url.Action("errandPicture", "errandom")" />
</div>
<div id="errandPreviewDescriptionDisplay" class="errandomDisplay col-xs-offset-1 col-xs-10 col-sm-offset-0 col-sm-7 col-md-offset-0 col-md-7 col-lg-offset-0 col-lg-7">
@Html.DisplayFor(m => m.Description)
</div>
</div>
<hr />
<div id="errandPreviewLocationArea" class="manageArea row">
<div id="errandPreviewLocationDisplayName" class="errandomDisplayName col-xs-offset-1 col-xs-10 col-sm-offset-1 col-sm-10 col-md-offset-1 col-md-10 col-lg-offset-1 col-lg-10">
@Html.DisplayNameFor(m => m.Location)
</div>
<div id="errandPreviewLocationDisplay" class="errandomDisplay col-xs-offset-1 col-xs-10 col-sm-offset-1 col-sm-10 col-md-offset-1 col-md-10 col-lg-offset-1 col-lg-10">
@Html.DisplayFor(m => m.Location)
@Html.HiddenFor(m => m.Location, new { @id = "errandPreviewLocationDisplayValue", @class = "manageDisplay" })
</div>
<div id="errandPreviewMapDisplayFrame" class="col-xs-12 col-sm-12 col-md-12 col-lg-12">
<div id="errandPreviewMapDisplay" class="errandomDisplay col-xs-offset-1 col-xs-10 col-sm-offset-1 col-sm-10 col-md-offset-1 col-md-10 col-lg-offset-1 col-lg-10">
</div>
</div>
</div>
<hr />
<div id="errandPreviewTimeArea" class="manageArea row">
<div id="errandPreviewASAPDisplayName" class="errandomDisplayName col-xs-offset-1 col-xs-5 col-sm-offset-1 col-sm-5 col-md-offset-1 col-md-5 col-lg-offset-1 col-lg-5">
@Html.DisplayNameFor(m => m.ASAP)
</div>
<div id="errandPreviewASAPDisplay" class="errandomDisplay col-xs-offset-0 col-xs-5 col-sm-offset-0 col-sm-5 col-md-offset-0 col-md-5 col-lg-offset-0 col-lg-5">
@Html.DisplayFor(m => m.ASAP)
</div>
<div id="errandPreviewStartDateTimeDisplayName" class="errandomDisplayName col-xs-offset-1 col-xs-10 col-sm-offset-1 col-sm-5 col-md-offset-1 col-md-5 col-lg-offset-1 col-lg-5">
@Html.DisplayNameFor(m => m.StartDateTime)
</div>
<div id="errandPreviewStartDateTimeDisplay" class="errandomDisplay col-xs-offset-1 col-xs-10 col-sm-offset-0 col-sm-5 col-md-offset-0 col-md-5 col-lg-offset-0 col-lg-5">
@Html.DisplayFor(m => m.StartDateTime)
</div>
<div id="errandPreviewEndDateTimeDisplayName" class="errandomDisplayName col-xs-offset-1 col-xs-10 col-sm-offset-1 col-sm-5 col-md-offset-1 col-md-5 col-lg-offset-1 col-lg-5">
@Html.DisplayNameFor(m => m.EndDateTime)
</div>
<div id="errandPreviewEndDateTimeDisplay" class="errandomDisplay col-xs-offset-1 col-xs-10 col-sm-offset-0 col-sm-5 col-md-offset-0 col-md-5 col-lg-offset-0 col-lg-5">
@Html.DisplayFor(m => m.EndDateTime)
</div>
<div id="errandPreviewDurationInHoursDisplayName" class="errandomDisplayName col-xs-offset-1 col-xs-5 col-sm-offset-1 col-sm-5 col-md-offset-1 col-md-5 col-lg-offset-1 col-lg-5">
@Html.DisplayNameFor(m => m.DurationInHours)
</div>
<div id="errandPreviewDurationInHoursDisplay" class="errandomDisplay col-xs-offset-0 col-xs-5 col-sm-offset-0 col-sm-5 col-md-offset-0 col-md-5 col-lg-offset-0 col-lg-5">
@Html.DisplayFor(m => m.DurationInHours)
</div>
</div>
<hr />
<div id="errandPreviewOfferingArea" class="manageArea row">
<div id="errandPreviewOfferingDisplayName" class="errandomDisplayName col-xs-offset-1 col-xs-5 col-sm-offset-1 col-sm-5 col-md-offset-1 col-md-5 col-lg-offset-1 col-lg-5">
@Html.DisplayNameFor(m => m.Offering)
</div>
<div id="errandPreviewPaymentMethodDisplayName" class="errandomDisplayName col-xs-5 col-sm-5 col-md-5 col-lg-5">
@Html.DisplayNameFor(m => m.PaymentMethod)
</div>
<div id="errandPreviewCurrencyDisplay" class="errandomDisplay col-xs-offset-1 col-xs-2 col-sm-offset-1 col-sm-1 col-md-offset-1 col-md-1 col-lg-offset-1 col-lg-1">
@Html.DisplayFor(m => m.Currency)
</div>
<div id="errandPreviewOfferingDisplay" class="errandomDisplay col-xs-offset-0 col-xs-3 col-sm-offset-0 col-sm-4 col-md-offset-0 col-md-4 col-lg-offset-0 col-lg-4">
@Html.DisplayFor(m => m.Offering)
</div>
<div id="errandPreviewPaymentMethodDisplay" class="errandomDisplay col-xs-5 col-sm-5 col-md-5 col-lg-5">
@Html.DisplayFor(m => m.PaymentMethod)
</div>
<div id="errandPreviewPriceDisplayName" class="errandomDisplayName col-xs-offset-1 col-xs-12 col-sm-offset-1 col-sm-12 col-md-offset-1 col-md-12 col-lg-offset-1 col-lg-12">
@Html.DisplayNameFor(m => m.Price)
</div>
<div id="errandPreviewPriceDisplay" class="errandomDisplay col-xs-offset-1 col-xs-12 col-sm-offset-1 col-sm-12 col-md-offset-1 col-md-12 col-lg-offset-1 col-lg-12">
@Html.DisplayFor(m => m.Price)
</div>
</div>
<hr />
<div id="errandPreviewUserArea" class="manageArea row">
<div id="errandPreviewUserPictureDisplay" class="errandomDisplay col-xs-offset-1 col-xs-3 col-sm-offset-1 col-sm-2 col-md-offset-1 col-md-2 col-lg-offset-1 col-lg-2">
<img id="errandPreviewUserPicture" class="errandPreviewUserPicture" src="@Url.Action("UserPicture", "Manage")" />
</div>
<div id="errandPreviewFirstNameDisplay" class="errandomDisplay col-xs-7 col-sm-8 col-md-8 col-lg-8">
@Html.DisplayFor(m => m.FirstName)
@*link to contact for questions*@
@Html.DisplayFor(m => m.Rating)
</div>
</div>
</div>
<div id="errandPreviewButtonSection" class="manageSection">
<div id="errandPreviewButtonArea" class="manageArea row">
@Html.ActionLink("Edit", "EditErrand", "errandom", new { ID = Model.ID }, htmlAttributes: new { @id = "errandPreviewEditButton", @class = "manageButton col-xs-5 col-sm-5 col-md-5 col-lg-5" })
<div id="errandPreviewButtonSeparator" class="manageSeparator col-xs-2 col-sm-2 col-md-2 col-lg-2"></div>
@Html.ActionLink("Post", "ConfirmErrand", "errandom", new { ID = Model.ID }, htmlAttributes: new { @id = "errandPreviewPostButton", @class = "manageButton col-xs-5 col-sm-5 col-md-5 col-lg-5" })
</div>
</div>
}
</section>
知道我哪里出错了吗?如前所述,目标应该是从 CREATE 直接到 PREVIEW (本质上是一个缩减的 UPDATE)然后回到 索引.
据我了解你的问题,你想在发布前预览,如果你已经保存记录,你可以使用这个获取ID:
//POST: /errandom/errandPreview
public ActionResult ConfirmErrand(int? ID) //Add this parameter to get record ID
{
//Your other logic here..
var errand = ERRANDOM.errands.Find(ID); //Find your record
errand.Published = true;
//Update errand to DB
ERRANDOM.Entry(errand).State = EntityState.Modified;
ERRANDOM.SaveChanges();
return RedirectToAction("Index");
}
您可以使用 Find 方法获取记录,因为您在此处将代码的 ID 传递给您现有的视图代码:
@Html.ActionLink("Post", "ConfirmErrand", "errandom", new { ID = Model.ID }, htmlAttributes: new { @id = "errandPreviewPostButton", @class = "manageButton col-xs-5 col-sm-5 col-md-5 col-lg-5" })
我的流程比较简单:
post正在编辑一个项目 -> post 的预览 -> 选项 A:编辑 |选项 B:发布
一切都按预期工作,尽可能使用标准 CRUD。但是,在项目被 posted 的情况下,然后要预览屏幕并且用户想要发布(这实际上只是在数据库中将 bool 从 false 更改为 true)我收到以下错误留言:
Validation failed for one or more entities. See 'EntityValidationErrors' property for more details. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Data.Entity.Validation.DbEntityValidationException: Validation failed for one or more entities. See 'EntityValidationErrors' property for more details.
在标准 CRUD 中,我在编辑时调用项目的 ID,但是当从创建移动到预览时,似乎没有逻辑方法来调用 ID,因为它刚刚被创建。但是,由于中间有额外的步骤,我认为问题在于我在没有在预览视图中指定 ID 的情况下尝试进行编辑。
这里是我的发布部分的控制器代码:
//POST: /errandom/errandPreview
public ActionResult ConfirmErrand()
{
// define variables for reuse
var userID = User.Identity.GetUserId();
DateTime nowUTC = DateTime.Now.ToUniversalTime();
DateTime nowLocal = DateTime.Now.ToLocalTime();
// define errand
var errand = new errands
{
// form
Published = true
};
// save errand to DB
ERRANDOM.Entry(errand).State = EntityState.Modified;
ERRANDOM.SaveChanges();
return RedirectToAction("Index");
}
加上完整性视图:
<section id="errandPreview" class="manageForm">
@using (Html.BeginForm("errandPreviewForm", "errandom", FormMethod.Post, new { @id = "errandPreviewForm", @class = "form-horizontal", @role = "form" }))
{
@Html.AntiForgeryToken()
@Html.HiddenFor(m => m.LatitudePosted, new { @id = "errandPreviewLatitudePosted", @class = "userActivity" })
@Html.HiddenFor(m => m.LongitudePosted, new { @id = "errandPreviewLongitudePosted", @class = "userActivity" })
@Html.HiddenFor(m => m.LocationPosted, new { @id = "errandPreviewUserLocationPosted", @class = "userActivity" })
@Html.HiddenFor(m => m.ID, new { @id = "errandPreviewID", @class = "errandPreviewID" })
<div id="errandPreviewErrandSection" class="manageSection">
<p id="errandPreviewErrandSectionTitle" class="manageSectionTitle">
@Html.DisplayFor(m => m.Title)
</p>
<div id="errandPreviewCategoryArea" class="manageArea row">
<div id="errandPreviewDateTimePostedDisplayName" class="errandomDisplayName col-xs-offset-1 col-xs-10 col-sm-offset-1 col-sm-10 col-md-offset-1 col-md-10 col-lg-offset-1 col-lg-10">
@Html.DisplayNameFor(m => m.DateTimePosted)
</div>
<div id="errandPreviewDateTimePostedDisplay" class="errandomDisplay col-xs-offset-1 col-xs-10 col-sm-offset-1 col-sm-10 col-md-offset-1 col-md-10 col-lg-offset-1 col-lg-10">
@Html.DisplayFor(m => m.DateTimePosted)
</div>
<div id="errandPreviewCategoryDisplayName" class="errandomDisplayName col-xs-offset-1 col-xs-5 col-sm-offset-1 col-sm-5 col-md-offset-1 col-md-5 col-lg-offset-1 col-lg-5">
@Html.DisplayNameFor(m => m.Category)
</div>
<div id="errandPreviewSubCategoryDisplayName" class="errandomDisplayName col-xs-5 col-sm-5 col-md-5 col-lg-5">
@Html.DisplayNameFor(m => m.SubCategory)
</div>
<div id="errandPreviewCategoryDisplay" class="errandomDisplay col-xs-offset-1 col-xs-5 col-sm-offset-1 col-sm-5 col-md-offset-1 col-md-5 col-lg-offset-1 col-lg-5">
@Html.DisplayFor(m => m.Category)
</div>
<div id="errandPreviewSubCategoryDisplay" class="errandomDisplay col-xs-5 col-sm-5 col-md-5 col-lg-5">
@Html.DisplayFor(m => m.SubCategory)
</div>
</div>
<hr />
<div id="errandPreviewDescriptionArea" class="manageArea row">
<div id="errandPreviewPictureDisplay" class="errandomDisplay col-xs-offset-1 col-xs-10 col-sm-offset-1 col-sm-3 col-md-offset-1 col-md-3 col-lg-offset-1 col-lg-3">
<img id="errandPreviewPicture" class="errandPreviewPicture" src="@Url.Action("errandPicture", "errandom")" />
</div>
<div id="errandPreviewDescriptionDisplay" class="errandomDisplay col-xs-offset-1 col-xs-10 col-sm-offset-0 col-sm-7 col-md-offset-0 col-md-7 col-lg-offset-0 col-lg-7">
@Html.DisplayFor(m => m.Description)
</div>
</div>
<hr />
<div id="errandPreviewLocationArea" class="manageArea row">
<div id="errandPreviewLocationDisplayName" class="errandomDisplayName col-xs-offset-1 col-xs-10 col-sm-offset-1 col-sm-10 col-md-offset-1 col-md-10 col-lg-offset-1 col-lg-10">
@Html.DisplayNameFor(m => m.Location)
</div>
<div id="errandPreviewLocationDisplay" class="errandomDisplay col-xs-offset-1 col-xs-10 col-sm-offset-1 col-sm-10 col-md-offset-1 col-md-10 col-lg-offset-1 col-lg-10">
@Html.DisplayFor(m => m.Location)
@Html.HiddenFor(m => m.Location, new { @id = "errandPreviewLocationDisplayValue", @class = "manageDisplay" })
</div>
<div id="errandPreviewMapDisplayFrame" class="col-xs-12 col-sm-12 col-md-12 col-lg-12">
<div id="errandPreviewMapDisplay" class="errandomDisplay col-xs-offset-1 col-xs-10 col-sm-offset-1 col-sm-10 col-md-offset-1 col-md-10 col-lg-offset-1 col-lg-10">
</div>
</div>
</div>
<hr />
<div id="errandPreviewTimeArea" class="manageArea row">
<div id="errandPreviewASAPDisplayName" class="errandomDisplayName col-xs-offset-1 col-xs-5 col-sm-offset-1 col-sm-5 col-md-offset-1 col-md-5 col-lg-offset-1 col-lg-5">
@Html.DisplayNameFor(m => m.ASAP)
</div>
<div id="errandPreviewASAPDisplay" class="errandomDisplay col-xs-offset-0 col-xs-5 col-sm-offset-0 col-sm-5 col-md-offset-0 col-md-5 col-lg-offset-0 col-lg-5">
@Html.DisplayFor(m => m.ASAP)
</div>
<div id="errandPreviewStartDateTimeDisplayName" class="errandomDisplayName col-xs-offset-1 col-xs-10 col-sm-offset-1 col-sm-5 col-md-offset-1 col-md-5 col-lg-offset-1 col-lg-5">
@Html.DisplayNameFor(m => m.StartDateTime)
</div>
<div id="errandPreviewStartDateTimeDisplay" class="errandomDisplay col-xs-offset-1 col-xs-10 col-sm-offset-0 col-sm-5 col-md-offset-0 col-md-5 col-lg-offset-0 col-lg-5">
@Html.DisplayFor(m => m.StartDateTime)
</div>
<div id="errandPreviewEndDateTimeDisplayName" class="errandomDisplayName col-xs-offset-1 col-xs-10 col-sm-offset-1 col-sm-5 col-md-offset-1 col-md-5 col-lg-offset-1 col-lg-5">
@Html.DisplayNameFor(m => m.EndDateTime)
</div>
<div id="errandPreviewEndDateTimeDisplay" class="errandomDisplay col-xs-offset-1 col-xs-10 col-sm-offset-0 col-sm-5 col-md-offset-0 col-md-5 col-lg-offset-0 col-lg-5">
@Html.DisplayFor(m => m.EndDateTime)
</div>
<div id="errandPreviewDurationInHoursDisplayName" class="errandomDisplayName col-xs-offset-1 col-xs-5 col-sm-offset-1 col-sm-5 col-md-offset-1 col-md-5 col-lg-offset-1 col-lg-5">
@Html.DisplayNameFor(m => m.DurationInHours)
</div>
<div id="errandPreviewDurationInHoursDisplay" class="errandomDisplay col-xs-offset-0 col-xs-5 col-sm-offset-0 col-sm-5 col-md-offset-0 col-md-5 col-lg-offset-0 col-lg-5">
@Html.DisplayFor(m => m.DurationInHours)
</div>
</div>
<hr />
<div id="errandPreviewOfferingArea" class="manageArea row">
<div id="errandPreviewOfferingDisplayName" class="errandomDisplayName col-xs-offset-1 col-xs-5 col-sm-offset-1 col-sm-5 col-md-offset-1 col-md-5 col-lg-offset-1 col-lg-5">
@Html.DisplayNameFor(m => m.Offering)
</div>
<div id="errandPreviewPaymentMethodDisplayName" class="errandomDisplayName col-xs-5 col-sm-5 col-md-5 col-lg-5">
@Html.DisplayNameFor(m => m.PaymentMethod)
</div>
<div id="errandPreviewCurrencyDisplay" class="errandomDisplay col-xs-offset-1 col-xs-2 col-sm-offset-1 col-sm-1 col-md-offset-1 col-md-1 col-lg-offset-1 col-lg-1">
@Html.DisplayFor(m => m.Currency)
</div>
<div id="errandPreviewOfferingDisplay" class="errandomDisplay col-xs-offset-0 col-xs-3 col-sm-offset-0 col-sm-4 col-md-offset-0 col-md-4 col-lg-offset-0 col-lg-4">
@Html.DisplayFor(m => m.Offering)
</div>
<div id="errandPreviewPaymentMethodDisplay" class="errandomDisplay col-xs-5 col-sm-5 col-md-5 col-lg-5">
@Html.DisplayFor(m => m.PaymentMethod)
</div>
<div id="errandPreviewPriceDisplayName" class="errandomDisplayName col-xs-offset-1 col-xs-12 col-sm-offset-1 col-sm-12 col-md-offset-1 col-md-12 col-lg-offset-1 col-lg-12">
@Html.DisplayNameFor(m => m.Price)
</div>
<div id="errandPreviewPriceDisplay" class="errandomDisplay col-xs-offset-1 col-xs-12 col-sm-offset-1 col-sm-12 col-md-offset-1 col-md-12 col-lg-offset-1 col-lg-12">
@Html.DisplayFor(m => m.Price)
</div>
</div>
<hr />
<div id="errandPreviewUserArea" class="manageArea row">
<div id="errandPreviewUserPictureDisplay" class="errandomDisplay col-xs-offset-1 col-xs-3 col-sm-offset-1 col-sm-2 col-md-offset-1 col-md-2 col-lg-offset-1 col-lg-2">
<img id="errandPreviewUserPicture" class="errandPreviewUserPicture" src="@Url.Action("UserPicture", "Manage")" />
</div>
<div id="errandPreviewFirstNameDisplay" class="errandomDisplay col-xs-7 col-sm-8 col-md-8 col-lg-8">
@Html.DisplayFor(m => m.FirstName)
@*link to contact for questions*@
@Html.DisplayFor(m => m.Rating)
</div>
</div>
</div>
<div id="errandPreviewButtonSection" class="manageSection">
<div id="errandPreviewButtonArea" class="manageArea row">
@Html.ActionLink("Edit", "EditErrand", "errandom", new { ID = Model.ID }, htmlAttributes: new { @id = "errandPreviewEditButton", @class = "manageButton col-xs-5 col-sm-5 col-md-5 col-lg-5" })
<div id="errandPreviewButtonSeparator" class="manageSeparator col-xs-2 col-sm-2 col-md-2 col-lg-2"></div>
@Html.ActionLink("Post", "ConfirmErrand", "errandom", new { ID = Model.ID }, htmlAttributes: new { @id = "errandPreviewPostButton", @class = "manageButton col-xs-5 col-sm-5 col-md-5 col-lg-5" })
</div>
</div>
}
</section>
知道我哪里出错了吗?如前所述,目标应该是从 CREATE 直接到 PREVIEW (本质上是一个缩减的 UPDATE)然后回到 索引.
据我了解你的问题,你想在发布前预览,如果你已经保存记录,你可以使用这个获取ID:
//POST: /errandom/errandPreview
public ActionResult ConfirmErrand(int? ID) //Add this parameter to get record ID
{
//Your other logic here..
var errand = ERRANDOM.errands.Find(ID); //Find your record
errand.Published = true;
//Update errand to DB
ERRANDOM.Entry(errand).State = EntityState.Modified;
ERRANDOM.SaveChanges();
return RedirectToAction("Index");
}
您可以使用 Find 方法获取记录,因为您在此处将代码的 ID 传递给您现有的视图代码:
@Html.ActionLink("Post", "ConfirmErrand", "errandom", new { ID = Model.ID }, htmlAttributes: new { @id = "errandPreviewPostButton", @class = "manageButton col-xs-5 col-sm-5 col-md-5 col-lg-5" })