У меня есть представление, которое прекрасно отображается с помощью действия Index ().В основном я читаю из БД и загружаю в свою модель.
Когда пользователь заполняет или изменяет значения и нажимает кнопку Отправить, я хочу сформировать форму для публикации в другом действии на том же контроллере.
Ноформа отправляется в действие index () по умолчанию.
Конечная цель - сохранить пользователя на той же странице, но показать результат отправки.
Вот мои коды:
Область регистрации для регистрации маршрута:
context.MapRoute(
"Test",
"app/test/{Id}",
new { controller = "Test", action = "Index" }
);
Контроллер:
[HttpGet]
public ActionResult Index(string rk, string g){
TestModel model = new TestModel();
//Now read from DB & populate the model
return View(model);
}
Это действие, которое я хочу отправить для отправки:
[HttpPost]
public ActionResult Update(TestModel model)
{
model = new TestModel();
model.Status = "Form Posted!";
return View("Index", model);
}
Вот мое мнение:
@using (Html.BeginForm("Update", "Test", FormMethod.Post, new { id="frmUpdate"}))
{
//My form fields get populated by model
<button type="submit" id="btnUpdate" onclick="return ValidateAndSubmit(this.id, 'result_label');">Update</button>
}
JS Interceptor при отправке нажмите:
function ValidateAndSubmit(b, l) {
//do validation before submit
if (AnyFieldNotValid) { alert('failed'); return false; }
else {
$("#frmUpdate").submit();
}
}
Что-то я делаю не так?
РЕДАКТИРОВАТЬ: Я не могу сделать пост $ .ajax (), так как в форме есть рекапча.