答案 0 :(得分:3)
您可以使用onClick事件处理程序:
<input type="submit" onclick="return confirm('Are you sure you wish to submit?');" />
您只能进行客户端提示,因为您的Controller代码在服务器上执行,当然客户端无法访问。
答案 1 :(得分:1)
如果您不想(或不能)使用JavaScript,请将其分为两个步骤:在一个操作中验证,然后重定向到执行确认的操作。 您可以存储传递给TempData或Session中的确认操作所需的任何数据。
[HttpPost]
public ActionResult JobHandlerUpdate(int jobScheduleId, JobHandlerList jobHandlerList)
{
var updateJobHander = new MainJobHandler();
var item = updateJobHander.GetById(jobScheduleId);
if (ModelState.IsValid)
{
List<string> days = jobHandlerList.JobProcessDayOfWeek.Split(',').ToList();
updateJobHander.Update(item, days);
if(jobHandlerList.MaxInstances == 0)
{
// Redirect to confirmation View
return View("JobUpdateConfirmation");
}
return RedirectToAction("JobHandler");
}
return View(item);
}
[HttpPost]
public ActionResult JobUpdateConfirmation()
{
// Code to update Job here
// Notify success, eg. view with a message.
return RedirectToAction("JobHandlerUpdateSuccess");
}
您需要一个视图(JobUpdateConfirmation),其中包含要求确认的表单,并回发到JobUpdateConfirmation。 这是一般的想法,您可以根据需要添加更多消息或步骤。
答案 2 :(得分:1)
在ASPX中:
<%= Html.ActionLink("link text", "ActionName", "ControllerName", new { actionMethodVariable = item.ID }, new { @onclick = "return confirm_dialog();" })%>
<script type="text/javascript">
function confirm_dialog() {
if (confirm("dialog text") == true)
return true;
else
return false;
}
</script>
//controller
public ActionResult ActionName(int laugh)
{
if (ModelState.IsValid)
{
//bla bla bla
}
return something;
}
答案 3 :(得分:0)
我认为这更多的是关于UI流程设计而不是控制器设计。在提交给第一个控制器之前,您是否可以提示用户有关待处理的更改?
我认为javascript /客户端确认在这里是理想的。
或者你可以像CGK建议的那样做,在页面提交后,重定向到第二个控制器,可能带有视图,以便在实际更新记录之前获得用户确认,或者如果他选择不重新定向回到上一页。
我打算在我认为其他答案试图说的内容上添加评论,但由于我不能100%肯定,我以为我只是写了我在这里想的。
欢呼:)