每当我尝试使用部分视图时,我总是遇到这个问题。 我有一个局部视图,其中包含以下内容:
_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");
}
答案 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");
。