问题描述
我使用 AJAX 将表单数据发送到 c# 控制器,但是我不知道如何访问控制器内的数据。我试图将表单数据作为 Person 对象传递到控制器中,但我只是返回 system.Models.Person。我是 C# 新手,非常感谢任何帮助,非常感谢。
Javascript
$('#myForm').submit(function(e){
e.preventDefault();
const formData = new FormData(e.target);
$.ajax({
url: '/Home/GetFormData',type: 'POST',data: {formData: formData},success: function(resultData){
console.log(resultData)
},error: function(){
//do something else
}
})
}
型号
public class Person
{
public string name { get; set; }
public string age { get; set; }
}
控制器
public string GetFormData(Person formData)
{
string name = formData.name.ToString();
return name;
}
解决方法
如果您要发送表单值,请使用序列化:
$form = $(this).serialize();
如果您要发送文件进行上传等,请使用 FormData。
在你的数据声明中,按原样设置(不将其声明为文字 JS 对象)
data: $form
最终代码如下所示:
$('#myForm').submit(function(e){
e.preventDefault();
$form = $(this).serialize();
$.ajax({
url: '/Home/GetFormData',type: 'POST',data: $form,success: function(resultData){
console.log(resultData)
},error: function(){
//do something else
}
})
,
下面的帖子会对你有所帮助
Post Data Using jQuery in ASP.NET MVC
你的代码应该是
模型类 Person.cs
public class Person
{
public string name { get; set; }
public string age { get; set; }
}
用于获取表单数据的 jQuery 函数,我假设您的表单上有提交按钮
$(document).ready(function () {
$("#btnSave").click(function () { //Your Submit button
$.ajax(
{
type: "POST",//HTTP POST Method
url: "Home/GetFormData",// Controller/View
data: { //Passing data
name: $("#txtname").val(),//Reading text box values using Jquery
age: $("#txtage").val(),}
});
});
});
你的 HomeController 方法
[HttpPost]
public ActionResult GetFormData(Person obj)
{
string name = obj.name;
string age = obj.age;
//Once you have data here then you can pass anywhere i.e. database or some other method
return View();
}
控制器中的表单值
如果需要澄清,请告诉我。