2014-01-05 2 views
0

Я изучаю asp.net mvc frameworkОбновить страницу выполнить почтовый метод

Я создаю страницу с формой. Данные из этой формы поступают в базу данных. Затем я возвращаю эту страницу пользователю со всеми данными из базы данных. Легко

Ok.

  • Показать страницу с формой. Ok
  • Запись данных из этой формы в базу данных. Ok
  • Прочитайте данные из базы данных и покажите их пользователю. Ok

Ok. Но затем страница обновления пользователя, метод post выполняется снова с одинаковыми данными формы и другой записью данных в базу данных. WTF?

Вот код:

Контроллер:

public class MainController : Controller 
{ 
    [HttpGet] 
    public ActionResult Index() 
    { 
     return View(db.Entries.ToList()); 
    } 

    [HttpPost] 
    public ActionResult Index(Message msg) 
    { 
     db.Entries.Add(msg); 
     db.SaveChanges(); 

     return Index(); 
    } 

    private MessagesContext db = new MessagesContext(); 
} 

Вид:

@using BasicWeb.Models 
@model List<Message> 
@{ 
    ViewBag.Title = "Index"; 
} 

<h2>Сохранялка</h2> 

<form method="post" action=""> 
    <fieldset> 
     <legend>Введи бурду</legend> 
     <input type="text" name="UserName" maxlength="512"/> 
     <input type="submit" value="ВВОДИ МЕНЯ"/> 
    </fieldset> 
</form> 
<br /> 
@foreach(Message item in @Model) 
{ 
    <p>@item.UserName</p> 
} 

ответ

2

Обновив страницу после запроса POST, вы на самом деле повторно отправили свою форму.

Как правило, после отправки формы обязательно перенаправить пользователя в ту же форму, но в качестве запроса GET.

Узнать больше об этом: Post/Redirect/Get (PRG)

Смежные вопросы