首页 >后端开发 >C++ >如何在MVC控制器中附加模型以形成并作为模型接收?

如何在MVC控制器中附加模型以形成并作为模型接收?

Patricia Arquette
Patricia Arquette原创
2025-02-02 21:56:10950浏览

How to Append a Model to FormData and Receive it as a Model in an MVC Controller?

在MVC中将模型添加到FormData并将其作为模型接收

本文提供了一种完整的解决方案,用于解决将完整的模型集通过FormData传输并在控制器中将其作为模型访问的常见问题。

传统方法是将模型对象作为字符串添加到FormData中,这会导致控制器中的Request.Form集合接收到“[object object]”。为了克服这个限制,可以使用一种更优的方法:

使用FormData()序列化模型

利用FormData()功能,可以有效地将模型序列化为FormData。这会自动包含通过HTML表单输入上传的文件。

<code class="language-javascript">var formdata = new FormData($('form').get(0));</code>

使用Ajax发布数据

要将序列化的模型数据发布到控制器,请使用以下Ajax请求:

<code class="language-javascript">$.ajax({
  url: '@Url.Action("YourActionName", "YourControllerName")',
  type: 'POST',
  data: formdata,
  processData: false,
  contentType: false,         
});</code>

在控制器中接收模型

在控制器中,可以通过强类型模型参数接收序列化的模型数据:

<code class="language-csharp">[HttpPost]
public ActionResult YourActionName(YourModelType model)
{
}</code>

或者,如果您的模型不包含HttpPostedFileBase,请考虑以下修改:

<code class="language-csharp">[HttpPost]
public ActionResult YourActionName(YourModelType model, HttpPostedFileBase myImage)
{
}</code>

包含附加属性

如果您需要包含表单内容之外的其他信息,可以使用以下语法有效地追加属性:

<code class="language-javascript">formdata.append('someProperty', 'SomeValue');</code>

通过这些技术,您可以将模型数据无缝地添加到FormData中,从而方便地将其作为模型类型在控制器的操作方法中进行传输。

以上是如何在MVC控制器中附加模型以形成并作为模型接收?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn