我有一个名为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 });
}
我在这里失踪的是什么。
答案 0 :(得分:1)
回发
AJAX
Asynsconous - 使用AJAX,您可以获得异步调用,因此浏览器线程不会被阻止。这允许用户在等待您的请求的响应时仍然与UI进行交互。
更好的表现 - 您通常不需要重新加载整个页面,从而减少了开销。正在发出HTTP请求。
仅供参考 - 您仍然可以使用JsonResult建模绑定
public JsonResult BookProgram(Mymodel model)
{
//code to save into db
return Json(result);
}
答案 1 :(得分:1)
回发 - 是一个经典的工作流程。将大部分内部工作委托给您的webbrowser。您在服务器端计算的所有响应逻辑。
AJAX - 是一种构建动态Web应用程序的现代方法。单页应用程序的基本方法。在这种情况下,大多数工作应该在客户端完成。