在MVC中将模型添加到FormData并将其作为模型接收
本文提供了一种完整的解决方案,用于解决将完整的模型集通过FormData传输并在控制器中将其作为模型访问的常见问题。
传统方法是将模型对象作为字符串添加到FormData中,这会导致控制器中的Request.Form集合接收到“[object object]”。为了克服这个限制,可以使用一种更优的方法:
利用FormData()功能,可以有效地将模型序列化为FormData。这会自动包含通过HTML表单输入上传的文件。
<code class="language-javascript">var formdata = new FormData($('form').get(0));</code>
要将序列化的模型数据发布到控制器,请使用以下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中文网其他相关文章!