将 Razor Form 数据作为模型从带有 ajax 的引导模式传递回 C# 控制器方法
Posted
技术标签:
【中文标题】将 Razor Form 数据作为模型从带有 ajax 的引导模式传递回 C# 控制器方法【英文标题】:Pass Razor Form data back to C# controller method as Model from bootstrap modal with ajax 【发布时间】:2018-07-10 15:33:44 【问题描述】:好的,所以我有一个控制器方法定义为:
[WebMethod]
public bool ModalCreate([Bind(Include = "LastName,FirstName,EmailAddress,PhoneNumber,CustomerID,VendorID")] Person person)
try
if (ModelState.IsValid)
db.CorrActionPerson.Add(person);
db.SaveChanges();
return true;
catch (Exception ex)
ModelState.Merge(globalUtils.HandleExceptions(ex));
// do stuff...
return false;
而且我还有一个 AJAX 方法,我想用它来将用户从引导模式框发回。我正在使用实体框架 6 和 MVC 5。
这是我为 AJAX 尝试过的:
let objModalForm = $('#newPersonModal form');
let person = objModalForm.serializeArray();
$.ajax(
url: urlPrefix + '/Quality/CorrAction/Person/ModalCreate',
data: person: person ,
async: false
).done(function (data)
if (data === 'True')
//do other stuff
);
【问题讨论】:
有什么不工作吗?你有什么问题?WebMethod
属性必须用于static
方法。
问题是我可以让它返回到控制器方法,但它是空的......
【参考方案1】:
您的评论说控制器方法,因此不需要[WebMethod]
属性。尝试将 AJAX 请求的数据属性更改为:
data: person,
MVC匹配Person类的属性,但是“person”的参数名没有意义。传过来的数据也需要是类,而不是数组,所以也尽量用serialize()
方法代替:
//let person = objModalForm.serializeArray();
let person = objModalForm.serialize();
【讨论】:
非常感谢!这让我启动并运行!以上是关于将 Razor Form 数据作为模型从带有 ajax 的引导模式传递回 C# 控制器方法的主要内容,如果未能解决你的问题,请参考以下文章
从模型中的嵌套对象获取 MVC4/Razor 中 JavaScript 的元素 id
使用 Razor Pages,在用户从下拉列表中选择父级后,如何将相关数据加载到 div?
ASP.NET Core 2.1 Razor 页面返回带有模型的页面