Отображать успешное сообщение после HttpPost - PullRequest
0 голосов
/ 08 мая 2018

У меня есть вид, который имеет регистрационную форму. Если форма регистрации отправлена, я хочу вернуться к тому же представлению и отобразить временный Bootstrap Well, а затем исчезнуть. Проверьте мою идею в моем контроллере

Контроллер

// Insert User
[HttpPost]
public void AddUser(ResourceViewModel resourceInfo)
{
    // Fetch data from ViewModel as parameters Execute Stored Procedure

    db_RIRO.sp_InsertNewUser(resourceInfo.Username, resourceInfo.Password);
    db_RIRO.SaveChanges()

    // My Idea
    if (storedProcedure succesful)
    { // display success ViewBag in view }
    else 
    {
      // display failed ViewBag in view
    }

}

View

<div class="form-group">
    <label class="col-sm-3 control-label lb-sm" for="textinput">Password</label>
    <div class="col-sm-5">
        @Html.TextBoxFor(a => a.Password, new { @class = "form-control input-sm" })
    </div>
</div>

<div class="form-group">
    <label class="col-sm-3 control-label lb-sm" for="textinput">Username</label>
    <div class="col-sm-5">
        @Html.TextBoxFor(a => a.Username, new { @class = "form-control input-sm" })

    </div>
</div>

Как бы я достиг этого, используя ViewBag?

1 Ответ

0 голосов
/ 08 мая 2018

Вы не сказали, возвращаетесь ли вы к тому же представлению или нет, но в любом представлении, к которому вы делаете , вы можете распечатать TempData.

Вот базовый пример:

Контроллер:

[HttpPost]
public void AddUser(ResourceViewModel resourceInfo)
{
    // Fetch data from ViewModel as parameters Execute Stored Procedure

    db_RIRO.sp_InsertNewUser(resourceInfo.Username, resourceInfo.Password);
    db_RIRO.SaveChanges()

    // My Idea
    if (storedProcedure succesful)
    { 
      // display success tempdata in view 
      TempData["Message"] = "Data saved successfully";
    }
    else 
    {
      // display failed tempdata in view
      TempData["Message"] = "Sorry, an error has occurred";
    }
  //...etc
}

Просмотр (разместите это в любом месте, где вам нравится):

@if (TempData["Message"] != null)
{
    @Html.Raw(TempData["Message"].ToString())
}

В этом примере просто используется простая строка, но при необходимости вы можете использовать более сложную структуру данных (например, я полагаю, вы, возможно, захотите установить цветовые схемы / классы CSS для успеха / неудачи, например, или добавить Javascript, чтобы получить вещи например, эффекты затухания - вы можете поместить этот сценарий в свой оператор * 1017. * Может быть, стоит подумать о создании частичного представления многократного использования и объекта «Сообщение» для использования в качестве модели для него, который может передать все подобные вещи, и вы можете использовать это во всем приложении.

N.B. Если вы возвращаетесь к одному и тому же представлению, вы всегда можете просто использовать ViewBag вместо TempData - TempData может быть полезна, потому что будет сохраняться при разных запросах, например, если вы перенаправляете на другое действие в конце текущего действия, вместо непосредственного возврата представления.

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