MVC + Как я могу предупредить пользователя перед действием контроллера - PullRequest
0 голосов
/ 02 декабря 2010

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);
    }

Нужно ли делатьиспользуя JavaScript-оповещение?или есть хороший способ.

Ответы [ 4 ]

3 голосов
/ 02 декабря 2010

Вы, вероятно, можете сделать с обработчиком события onClick:

<input type="submit" onclick="return confirm('Are you sure you wish to submit?');" />

Вы можете делать только запросы на стороне клиента, поскольку ваш код контроллера выполняется на сервере, к которому, конечно, клиент не может получить доступ.

1 голос
/ 11 февраля 2011

В 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;
}
1 голос
/ 02 декабря 2010

Если вы не хотите (или не можете) использовать 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. Это общая идея, вы можете добавлять больше сообщений или шагов по мере необходимости.

0 голосов
/ 02 декабря 2010

Я думаю, что это больше связано с дизайном потока пользовательского интерфейса, а не с дизайном контроллера.Возможно ли вам сообщить пользователю об ожидающих изменениях, прежде чем даже отправлять его на первый контроллер?

Я бы подумал, что подтверждение на стороне javascript / client будет идеальным здесь.

или вы можете сделать это иным способом, как предложил CGK, и после отправки страницы перенаправить на второй контроллер, возможно, с его просмотром, чтобы получить подтверждение пользователя перед фактическим обновлением записи или, если он решит не делать этого,затем просто перенаправьте обратно на предыдущую страницу.

Я планировал добавить комментарии к тому, что я думал, что другие ответы пытались сказать, но, поскольку я не могу быть на 100% положительным, я подумал, что просто написал чтоя думал здесь.

ура :) 1009 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...