У меня есть форма, которая при нажатии на кнопку отправки переходит к действию в контроллере.
Это отлично работает. Действие возвращает представление с моделью представления:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "Title,Name,Surname,Email,ContactNumber")]ClientViewModel clientViewModel)
{
*some actions*
return View("SaveClient", matchesClientViewModel);
}
SaveClient.cshtm:
@model BusinessModels.MatchesClientViewModel
@{
ViewBag.Title = "SaveClient";
}
<h2>SaveClient</h2>
<h3>
bla bla
</h3>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
WebGrid grid = new WebGrid(Model.ClientMatches);
@grid.GetHtml(columns: new[]
{
grid.Column("Name"),
grid.Column("Surname"),
grid.Column("Email"),
})
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Save" class="btn btn-default" />
</div>
</div>
}
И в моем контроллере у меня есть следующее действие:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult SaveClient(MatchesClientViewModel matchesClientViewModel)
{
*some actions*
return View();
}
Тем не менее, кнопка «Отправить» действует не на действие SaveClient, а на действие «Создать».
При проверке формы в IE я вижу, что форма переходит к действию / Client / Create.
Я попытался заменить
@ using (Html.BeginForm ())
с
но это не работает.
Мой конфиг маршрута:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
Есть идеи, что я здесь не так делаю? Пожалуйста, помогите, я занимаюсь этим уже 2 дня.