使用部分视图进行文件上载

时间:2014-02-25 06:47:02

标签: c# .net asp.net-mvc-3 asp.net-mvc-4 partial-views

每当我尝试使用部分视图时,我总是遇到这个问题。 我有一个局部视图,其中包含以下内容:

_DocumentsPartial.cshtml
<div>
    <input type="text" name="txtDocType" />
    <input type="file" name="file_Uploader" />
</div>
<input type="submit" id="btnSaveDocument" />

然后我有一个viewPage,它是使用该局部视图的主页面::

ViewPage
   <div id="tabs-6">
            @*  *@
            @using (@Html.BeginForm("SaveDocumentFile", "PatientTab", FormMethod.Post, new { @id = "form1", @enctype = "multipart/form-data", @target = "iframeID" }))
            {
                Html.RenderAction("_DocumentPartial");
            }
            <iframe id="iframeID" name="myIFrame"></iframe>
        </div>

我可以在主页面中成功打开局部视图。但是当我点击部分视图中的提交按钮后,它会在新选项卡中返回我的部分视图,而它应该保持相同的状态,即。页面应该是相同的。但实际上,它在浏览器的新选项卡中打开部分视图的内容,如下所示::

http://localhost:6695/PatientTab/SaveDocumentFile

哪个不正确。

My controller code is as follows::

  public ActionResult _DocumentPartial()
        {
            return PartialView("../Shared/Partial/_DocumentPartial");
        }

        public ActionResult SaveDocumentFile(HttpPostedFileBase file_Uploader, string txtDocType)
        {
            return PartialView("../Shared/Partial/_DocumentPartial");
        }

2 个答案:

答案 0 :(得分:0)

这是典型的混乱。你想要的是动态加载局部视图,即。通过使用ajax。为此,可以在按钮上添加onclick处理程序并加载它:http://www.c-sharpcorner.com/UploadFile/d551d3/how-to-load-partial-views-in-Asp-Net-mvc-using-jquery-ajax/ 或者使用不显眼的ajax:

@Ajax.ActionLink(
    "load partial view", 
    "Load", 
    "Home", 
    new AjaxOptions { UpdateTargetId = "result" }
)

答案 1 :(得分:0)

这是因为此代码PartialView("../Shared/Partial/_DocumentPartial")返回部分视图,在表单提交后,它应该仅被重定向到此视图。 不包含您​​的部分视图的父视图。

如果要重定向到父视图,则需要使用

return RedirectToAction("Your parent view Name");