在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中文網其他相關文章!