C# MVC&x2B;如何在控制器操作之前向提示用户发出警报
这里是MVC新手 我想在控制器操作(更新记录)之前获得用户确认 我的代码:C# MVC&x2B;如何在控制器操作之前向提示用户发出警报,c#,javascript,asp.net-mvc,asp.net-mvc-2,C#,Javascript,Asp.net Mvc,Asp.net Mvc 2,这里是MVC新手 我想在控制器操作(更新记录)之前获得用户确认 我的代码: [HttpPost] public ActionResult JobHandlerUpdate(int jobScheduleId, JobHandlerList jobHandlerList) { var updateJobHander = new MainJobHandler(); var item = updateJobHander.GetById(jobSchedu
[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)
{
// here I need to prompt user if maxInstances entered is Zero-
Job will be disabled want to processs (Y/N) if yes update
else do nothing or redirect to edit screen
}
return RedirectToAction("JobHandler");
}
return View(item);
}
[HttpPost]
公共操作结果JobHandlerUpdate(int jobScheduleId、JobHandlerList JobHandlerList)
{
var updateJobHander=新的MainJobHandler();
var item=updateJobHander.GetById(jobScheduleId);
if(ModelState.IsValid)
{
List days=jobHandlerList.JobProcessDayOfWeek.Split(',').ToList();
updateJobHander.Update(项目,天);
if(jobHandlerList.MaxInstances==0)
{
//在这里,如果输入的maxInstances为零,我需要提示用户-
如果要处理(是/否),则将禁用作业更新
否则不执行任何操作或重定向到编辑屏幕
}
返回重定向到操作(“作业处理程序”);
}
返回视图(项目);
}
我需要使用javascript警报吗?
或者有什么好方法。您可以使用onClick事件处理程序:
<input type="submit" onclick="return confirm('Are you sure you wish to submit?');" />
您只能执行客户端提示,因为您的控制器代码在服务器上执行,客户端当然无法访问服务器。您可能可以使用onClick事件处理程序执行以下操作:
<input type="submit" onclick="return confirm('Are you sure you wish to submit?');" />
您只能执行客户端提示,因为您的控制器代码在服务器上执行,客户端当然无法访问。如果您不想(或不能)使用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");
}
[HttpPost]
公共操作结果JobHandlerUpdate(int jobScheduleId、JobHandlerList JobHandlerList)
{
var updateJobHander=新的MainJobHandler();
var item=updateJobHander.GetById(jobScheduleId);
if(ModelState.IsValid)
{
List days=jobHandlerList.JobProcessDayOfWeek.Split(',').ToList();
updateJobHander.Update(项目,天);
if(jobHandlerList.MaxInstances==0)
{
//重定向到确认视图
返回视图(“作业更新确认”);
}
返回重定向到操作(“作业处理程序”);
}
返回视图(项目);
}
[HttpPost]
公共行动结果作业更新确认()
{
//在此更新作业的代码
//通知成功,如用消息查看。
返回重定向到操作(“JobHandlerUpdateSuccess”);
}
您将需要一个视图(JobUpdateConfirmation)和一个请求确认的表单,并将其发回JobUpdateConfirmation。
一般来说,您可以根据需要添加更多消息或步骤。如果您不想(或不能)使用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");
}
[HttpPost]
公共操作结果JobHandlerUpdate(int jobScheduleId、JobHandlerList JobHandlerList)
{
var updateJobHander=新的MainJobHandler();
var item=updateJobHander.GetById(jobScheduleId);
if(ModelState.IsValid)
{
List days=jobHandlerList.JobProcessDayOfWeek.Split(',').ToList();
updateJobHander.Update(项目,天);
if(jobHandlerList.MaxInstances==0)
{
//重定向到确认视图
返回视图(“作业更新确认”);
}
返回重定向到操作(“作业处理程序”);
}
返回视图(项目);
}
[HttpPost]
公共行动结果作业更新确认()
{
//在此更新作业的代码
//通知成功,如用消息查看。
返回重定向到操作(“JobHandlerUpdateSuccess”);
}
您将需要一个视图(JobUpdateConfirmation)和一个请求确认的表单,并将其发回JobUpdateConfirmation。
这是一般的想法,您可以根据需要添加更多的消息或步骤。我认为这更多的是UI流设计,而不是控制器设计。您是否可以在提交给第一个控制器之前向用户提示挂起的更改 我认为javascript/客户端确认在这里是理想的 或者,您也可以按照CGK建议的另一种方式进行,在页面提交后,重定向到第二个控制器,可能是为了在实际更新记录之前获得用户确认,或者如果用户选择不这样做,则只重定向回上一页 我原打算在我认为其他答案试图表达的内容上添加评论,但由于我不能100%肯定,我认为我只是在这里写下了我的想法
干杯:)我认为这更多的是UI流设计,而不是控制器设计。您是否可以在提交给第一个控制器之前向用户提示挂起的更改 我认为javascript/客户端确认在这里是理想的 或者,您也可以按照CGK建议的另一种方式进行,在页面提交后,重定向到第二个控制器,可能是为了在实际更新记录之前获得用户确认,或者如果用户选择不这样做,则只重定向回上一页 我原打算在我认为其他答案试图表达的内容上添加评论,但由于我不能100%肯定,我认为我只是在这里写下了我的想法 干杯:)在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;
}
函数确认对话框(){
如果(确认(“对话框文本”)==true)
返回true;
其他的
返回false;
}
//控制器
公共操作结果操作名称(int)
{
if(ModelState.IsValid)
{
//呜呜呜呜
}
归还某物;
}
在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;
}
函数确认对话框(){
如果(确认(“对话框文本”)==true)
返回true;
其他的
返回false;
}
//控制器
公众的