如何将表单数据发送到控制器以发出 ajax 请求以将数据保存在 DB 中
本文关键字:数据 请求 保存 存在 ajax DB 控制器 表单 | 更新日期: 2023-09-27 18:36:22
我正在开发一个 ASP.net 的MVC 2.0应用程序。
我有一个表单,将数据输入其中后,用户单击提交。
在这里,我不想做 enitre 回发,我只想发出一个 ajax 请求,将表单数据发送到相应的控制器方法,并将响应插入并发送到同一页面。
由于我使用的是MVC 2.0,所以我不能使用AJax.beginForm。 我需要依靠jquery Ajax方法。
请帮忙。
我正在使用强类型视图。
您可以使用 JavaScript 的序列化方法直接发布数据。
在视野中
@model ViewModel
@using (Html.BeginForm("Save", "Home", FormMethod.Post, new { id = "FormId" }))
{
<input type="button" value="Save" onclick="SaveDemo();" />
}
Java脚本保存功能
function SaveDemo() {
$.ajax({
url: '',
type: 'POST',
cache: false,
data: jQuery("#FormId").serialize(),
success: function (result) {
// do accordingly as per your result
} }); }
和控制器保存方法将像:
[HttpPost]
public ActionResult Save(ViewModel viewModel)
{
if (this.ModelState.IsValid)
{
// save to DB
}
return this.View(viewModel);
}
试试这个,
在下面的代码中,我初始化模型并发布该模型。
var returnValue = new Object();//dynamically fill model value with different model entity
returnValue.vendorSiteSustainabilityList = VendorSiteSustainability;
returnValue.VendorSiteId = '@Model.VendorSiteId';
returnValue.ServiceTypeId = '@Model.ServiceTypeId';
returnValue.HaulerName = $("#HaulerName").val();
returnValue.FacilityName = $("#FacilityName").val();
returnValue.CityId = parseInt($("#CityId").val());
returnValue.StateId = parseInt($("#StateId").val());
returnValue.CoutryID = parseInt($("#CoutryID").val());
var request = $.ajax({
url: '',
type: 'POST',
cache: false,
data: JSON.stringify(returnValue),
dataType: 'json',
contentType: 'application/json; charset=utf-8'
});
request.done(function (msg) {
if (msg != null && msg.IsValid != null) {
if (msg.IsValid == true) {
//write code when your data successfully operated
}
}
});
型号声明:
[Serializable]
public class myModel
{}
控制器:
[HttpPost]
public ActionResult SaveAction(myModel model)
{
if (model != null && ModelState.IsValid)
{
}
return Json(new { IsValid = ModelState.IsValid });
}
您可以订阅表单的submit
事件并通过 ajax 发送数据:
$('form').submit(function(){
var $form = $(this);
if($form.valid()) {
var action = $form.prop('action'),
method = $form.prop('method'),
data = $form.serialize();
$.ajax({
url: action,
type: method,
data: data,
success: function (response) {
// success function
}
});
}
return false; // do not forget to return false to prevent the default behaviour
});
更新:
控制器:
[HttpPost]
public ActionResult Save(YourViewModel viewModel)
{
if (ModelState.IsValid)
{
// Save to db
}
return PartialView("_PartialViewName", viewModel);
}