MVC +如何在Controller操作之前警告提示用户

时间:2010-12-02 00:21:50

标签: c# javascript asp.net-mvc asp.net-mvc-2

4 个答案:

答案 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%肯定,我以为我只是写了我在这里想的。

欢呼:)