表单提交后保持URL不变

时间:2015-02-21 17:18:00

标签: c# asp.net-mvc

我有默认情况下上传文件的表单'索引'从同一个控制器调用操作(' FileUpload')的视图(在此示例中为“#39;管理员”):

@using (Html.BeginForm("FileUpload", "Admin", FormMethod.Post, htmlAttributes: new { enctype = "multipart/form-data" }))
        {

            <label for="articleFile" class="control-label">Upload article</label>
            <input id="articleFile" name="articleFile" type="file" accept=".txt" />
            <button type="submit">Upload</button>
        }

当我导航到此视图时,网址如下所示:

  

http://mydomain/admin

在FileUpload内部操作我上传逻辑,为索引创建模型&#39;查看,在模型中设置一些值(例如上传状态消息)并返回ViewResult:

 [HttpPost]
    public ActionResult FileUpload(HttpPostedFileBase articleFile)
    {
        IndexModel model = new IndexModel();

        // file upload logic here

        model.FileUploadMessage = "message";

        return View("Index", model);
    }

一切正常,上传文件并显示消息,但浏览器中的URL更改为:

  

http://mydomain/admin/fileupload

所以我的问题是:当表单提交完成后,当返回带有操作名称Index和model的ViewResult时,是否可以阻止它并使URL保持不变?

我知道我可以使用jQuery插件进行ajax异步文件上传或使用RedirectToAction作为结果,但后来我无法传递模型,只是路由值。

1 个答案:

答案 0 :(得分:0)

将页面重定向到索引是很好的选择

return RedirectToAction("Index", model);

因为最好遵循Post/Redirect/Get

如果您在提交请求后刷新浏览器时选择不这样做。您的请求将再次发布,您可能会遇到再次上传相同文件或系统任何未命中行为的问题。