2017-08-02 56 views
0

我有一个窗体和void post方法。asp.net MVC。不能使用void方法而不重定向

<form id="frm_loadFile" action="/Home/LoadFileWhithChanges" enctype="multipart/form-data" method="post" style="margin-top: 40px;"> 
       <input type="file" style="width: 100%;" name="upload" value="Choose file"><br><br> 
       <input style="width: 115px;" type="submit" value="Upload"> 
</form> 

    [HttpPost] 
    public void LoadFileWhithChanges(HttpPostedFileBase upload) 
    { 
       if (upload == null) 
       { 
        Response.Write(@"<script language='javascript'>alert('No file')</script>"); 
        Response.Flush(); 
        Response.End(); 

        return; 
       } 
       else 
       { 
        //... 
        Response.Write(@"<script language='javascript'>alert('All done')</script>"); 
        Response.Flush(); 
        Response.End(); 

        return; 
       } 
} 

但是当它调用Response.Write警告我的页面重定向

我想留在这个页面上response.write/后,我怎样才能做到这一点后?

+0

尝试'return new JavascriptResult {Script =“alert('No File');” };'而不是'Response.Write'方法来向用户显示警报。 – Lifewithsun

回答

0

您正在发布表单并收到回复。没关系,你的行为是void。浏览器不关心在服务器上如何生成响应。只有采取行动才能显示结果。如果你想留在同一个页面,你应该:

  1. 返回相同的页面从动作
  2. 张贴在AJAX的形式,在张贴文件的情况下,需要特殊的技术,涉及iframe。你可以在网上查找它。
+0

但为什么当我使用Response.OutputStream.Write(arrByte,0,arrByte.Length);用无法使用AJAX的方法下载文件,我留在当前页面? –

+0

@MrZverev在下载文件时(例如通过单击链接)浏览器下载文件,允许您保存文件,前提是您发送了正确的内容类型。这与张贴表单不同。 –