【问题标题】:Null parameter using Ajax.BeginForm iso Html.BeginForm使用 Ajax.BeginForm iso Html.BeginForm 的空参数
【发布时间】:2013-10-09 09:16:37
【问题描述】:

有一个控制器方法处理文件上传:

AcceptVerbs(HttpVerbs.Post)]
public ActionResult FileUpload(int id, HttpPostedFileBase uploadFile)
{
    if (uploadFile != null && uploadFile.ContentLength > 0 && ...)
    ...
}

当我使用 Html.BeginForm 时,一切正常。将 Html.BeginForm 替换为 Ajax.BeginForm 会导致 uploadFile 的值为空(上述方法的第 2 个参数):

<div id="ajaxDocumentUpload">
@{ using (Ajax.BeginForm("FileUpload", "ProjectDocument", FormMethod.Post, 
           new AjaxOptions { OnSuccess = "UploadSuccess" }, 
           new { enctype = "multipart/form-data" }))
  {
    <div>
        <input type=file accept="image/gif, image/jpeg" name="uploadFile">     
    </div>
    <div>
        <input type="hidden" name="id" id="id" value="@Model.ProjectId"/>
    </div>

    <input id=btnUpdateAttachment type=submit value="Upload">
  } 
}
</div>

知道有什么问题吗?提前感谢您的帮助!

【问题讨论】:

    标签: ajax asp.net-mvc asp.net-mvc-4


    【解决方案1】:

    您向Ajax.BeginForm() 传递了不兼容的参数。改用这个:

    @using(Ajax.BeginForm("FileUpload", "ProjectDocument", null, 
        new AjaxOptions { OnSuccess = "UploadSuccess" }, 
        new { enctype = "multipart/form-data" })
    

    MSDN documentation

    【讨论】:

    • 不幸的是,将 FormMethod.Post 替换为 null 没有积极作用。参数uploadFile还是null(id还是可以的)。
    猜你喜欢
    • 2010-10-21
    • 1970-01-01
    • 2016-09-06
    • 1970-01-01
    • 1970-01-01
    • 2013-10-14
    • 2021-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多