繁体   English   中英

Ajax表单不在ASP.NET MVC中发布

[英]Ajax form not posting in asp.net mvc

我有一个表单,可以上传具有指定名称和类别的文件。 我已经设置好了,所以可以使用ajax.beginform调用在页面上发布文章。 当我单击“提交”时,除了重定向到页面外,它什么也没做。

形成:

@using (Ajax.BeginForm("AttachFile", "Attachments", null, new AjaxOptions { HttpMethod = "Post", UpdateTargetId = "filesuccess", OnSuccess = "addFileSuccess", OnFailure = "addFileFailure" }, new { enctype = "multipart/form-data" }))
        {
            <div class="modal-body" id="addfilemodaltext">
                <div class="form-group">
                    <div class="control-label">Select file to add to this collaboration:</div>
                    @Html.Hidden("CollaborationId", Model.Collaboration.Id)
                    <input type="file" name="FileContents" id="FileContents"/>                        
                </div>
                <div class="form-group">
                    <div class="control-label">Enter a description for this file: </div>
                    @Html.TextArea("FileDescription", null, new {@class = "form-control"})
                </div>
                <div class="form-group">
                    <div class="control-label">Select a Category for this file:</div>
                    @Html.DropDownList("categoryId", new SelectList(Model.AttachmentCategories, "Id", "Name"), new { @class = "form-control" })
                </div>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
                <input type="submit" class="btn btn-primary" id="addfilebtn" value="Upload File" />
            </div>
        }

控制器:

[HttpPost]
    public ActionResult AttachFile(int CollaborationId, string FileDescription, int categoryId, HttpPostedFileBase FileContents)
    {
        if (FileContents != null && FileContents.ContentLength > 0)
        {
            var fileName = FileContents.FileName;
            var mimeType = FileContents.ContentType;                
            var fileLength = FileContents.ContentLength;
            byte[] fileData = new byte[fileLength];
            FileContents.InputStream.Read(fileData, 0, fileLength);

            var response = DchServiceUtility.ServiceClient.AddAttachmentToCollaboration(CollaborationId,
                CurrentUser.Id, mimeType, FileDescription, fileName, fileData, categoryId, AppSettings.ClientName);

        }

        return RedirectToAction("Details", "Collaborations", new { @id = CollaborationId });
    }

新的一件事是它开始无法解决操作“ AttachFile”。 我究竟做错了什么?

我认为您需要像这样添加enctype属性:

    @using (Ajax.BeginForm("YourAction", "YourController",
                    new AjaxOptions() { HttpMethod = "POST", //More options here },
                    new { enctype = "multipart/form-data"}))

编辑 :您的代码具有硬编码的categoryIdCollaborationId

    @using (Ajax.BeginForm("AttachFile", "Home", null, new AjaxOptions { HttpMethod = "Post", UpdateTargetId = "filesuccess", OnSuccess = "addFileSuccess", OnFailure = "addFileFailure" }, new { enctype = "multipart/form-data" }))
    {
    <div class="modal-body" id="addfilemodaltext">
        <div class="form-group">
            <div class="control-label">Select file to add to this collaboration:</div>
            @Html.Hidden("CollaborationId", 1)
            <input type="file" name="FileContents" id="FileContents" />
        </div>
        <div class="form-group">
            <div class="control-label">Enter a description for this file: </div>
            @Html.TextArea("FileDescription", null, new { @class = "form-control" })
        </div>
        <div class="form-group">
            <div class="control-label">Select a Category for this file:</div>
             @Html.Hidden("categoryId", 1)
        </div>
    </div>
    <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
        <input type="submit" class="btn btn-primary" id="addfilebtn" value="Upload File" />
    </div>
    }

结果: 在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM