У меня есть страница под названием Bookprogram, которая содержит 6 элементов управления вводом, а именно txtName, txtEmail, txtPhone, selectcat [раскрывающийся список для категорий], txtDate, txtMessage. Теперь, когда я закончил со всеми проверками для вышеуказанного элемента управления, я хочу сохранить данные в db. Я знаю, как выполнять как в ajax, так и полностью размещать страницы.
Если он находится в ajax, после проверки я бы просто позвонил $.ajax
и отправил данные в виде строки и загрузил их в контроллер, как показано ниже:
[HttpPost]
public JsonResult BookProgram(string name, string email, string phone, string category, string date, string message)
{
//code to save into db
return Json(result);
}
Если мне нужно опубликовать целую страницу, после проверки я просто сделаю $(form).submit();
и напишу в контроллере, как показано ниже:
[HttpPost]
public ActionResult Bookprogram(Mymodel model)
{
//Code to save the data
return View();
}
Я просто хочу знать, что лучше, безопаснее и удобнее использовать, так как после успешной отправки мне нужно отображать сообщение. Я знаю, что могу использовать любой из способов отображения сообщения, но действительно ли обратная передача [обновление страницы] необходима в этом сценарии, и если да, то каковы ее преимущества перед публикацией ajax?
РЕДАКТИРОВАТЬ:
Я только что прошел через this и попытался реализовать второе решение, получившее наибольшее количество голосов, но, к моему несчастью, он не попал в сам контроллер. Я сохранил точку останова в своем контроллере.
$(form).on("submit", function (e) {
e.preventDefault();
ValidateForm(form);
var selectedVal = $(form).find('select').children(":selected").val();
if(selectedVal=="")
{
$(form).find('div.bootstrap-select').children(":first").addClass('alert-danger');
$(form).find('div.bootstrap-select').next('.text-danger').html('Please select a category!');
}
var formContainer = $(form + ' .text-danger');
if ($(formContainer).text().length == 0) {
$.ajax({
url: '/Home/BookProgram/',
type: "POST",
dataType: 'json',
contentType: "application/json; charset=utf-8",
data: $('#fbookprogram').serializeArray(),
success: function (data) {
if (data.result == "Success") {
alert('success');
}
else {
alert('fail');
return false;
}
return true;
}
});
}
$(form).unbind('submit');
return false;
});
Контроллер:
public ActionResult BookProgram(MyModel model)
{
if(ModelState.IsValid)
{
//code to save data
}
return Json(new { success = false });
}
Что мне здесь не хватает.
public ActionResult Bookprogram(Mymodel model)
для сообщения ajax (и вам следует это сделать, потому что вы можете воспользоваться привязкой модели и проверкойModelState.IsValid
) - person   schedule 09.02.2015ModelState
ошибки иValidationMessageFor()
для их отображения). Если данные сохранены в порядке, выполните перенаправление в другое представление (например, представление индекса или подробностей, где вы можете отобразить сообщение об успешном выполнении (с помощьюTempData
). Однако если вы хотите вернуться в представление для выполнения других действий на странице, тогда ajax может быть лучше. - person   schedule 09.02.2015$.post(url, $('form').serialize(), function(data) { // do something ...
- person   schedule 09.02.2015