C# MVC&x2B;如何在控制器操作之前向提示用户发出警报

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

这里是MVC新手

我想在控制器操作(更新记录)之前获得用户确认

我的代码:

[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;
}
//控制器
公众的