public class BuyController : Controller
{
public ActionResult Index()
{
BuyModel model = new BuyModel();
model.Message= "START";
return View(model);
}
[HttpPost]
public ActionResult Index(BuyModel model)
{
model = new BuyModel();
model.Message= "FINISH";
ModelState.Clear(); // the fix
return View(model);
}
}
Просмотр:
@model MvcApplication1.Models.BuyModel
@using (Html.BeginForm("Index", "Buy"))
{
@Html.TextBoxFor(s => s.Message)
<button type="submit" >Send</button>
}
Ваша проблема в том, что исходный код, этот метод действия, будет выполняться только как HTTP-запрос GET.ASP.NET MVC позволяет вам указать сообщение с атрибутом [HttpPost]
( см. Код выше ).
Я не уверен, что вы получаете с вашим желаемым поведением POST,Кажется, что вы просто стираете все значения форм, помещенные в POST.Поэтому измените мой приведенный выше код соответствующим образом, но он должен дать вам общее представление.
Edit : похоже, что текстовое поле сохраняет свое значение после POST.Это не только с "START"
, но если вы введете что-либо в это текстовое поле и нажмете «Отправить», у вас будет POST с тем же текстом в текстовом поле, который был при отправке формы.
Редактировать Редактировать : см. Измененный код.Вызовите ModelState.Clear()
в вашем методе действия POST, и вы получите правильное значение.