C# 表单提交后保持URL不变

C# 表单提交后保持URL不变,c#,asp.net-mvc,C#,Asp.net Mvc,我有一个表单,在默认的“索引”视图上带有文件上载,该视图从同一个控制器(“本例中为“管理员”)调用操作(“文件上载”): 一切正常,文件已上载并显示消息,但浏览器中的URL更改为: 所以我的问题是:当返回带有操作名索引和模型的ViewResult时,是否有可能在表单提交完成后阻止它并使URL保持不变 我知道我可以使用jQuery插件进行ajax异步文件上传,或者使用RedirectToAction作为结果,但我无法传递模型,只能路由值。将页面重定向回索引是一个不错的选择 return Redi

我有一个表单,在默认的“索引”视图上带有文件上载,该视图从同一个控制器(“本例中为“管理员”)调用操作(“文件上载”):

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

所以我的问题是:当返回带有操作名索引和模型的ViewResult时,是否有可能在表单提交完成后阻止它并使URL保持不变


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

将页面重定向回索引是一个不错的选择

return RedirectToAction("Index", model);
因为这是一个很好的实践


如果您选择在提交请求后刷新浏览器时不遵循此操作。您的请求将再次被发布,您可能会面临再次上传同一文件的问题或系统的任何遗漏行为

可能是重复的谢谢,但我不认为这是同一个问题。建议重定向到默认操作,并在查询字符串中传递id参数,这样可以从数据源检索更新的模型,因为模型不能传递到RedirectToAction。我不想将模型传递到重定向到操作,我只想在表单提交后URL保持不变。我理解,但没有其他方法。。1.)使用参数/tempdata/whatever重定向到操作,2.)ajax,3.)将代码放入索引操作。一旦发布到url,您必须重定向才能“以某种方式”离开。http就是这样工作的。使用submit,您可以创建一个指向该url的http post,因此如果您只是返回一个不同的url,而没有任何重定向,那将非常奇怪。是的,这是有意义的。我选择了选项3,将操作从FileUpload重命名为Index,这样我就可以发布到相同的URL。我现在有两个版本的索引操作-get和post-现在URL保持不变。谢谢你的帮助!我无法将模型传递给RedirectToAction,只能传递RouteValue。没问题,我只是认为您有一些与索引方法关联的模型。我只是想把那个重定向页面指向Index方法。传递模型,否则只需重定向到Index方法。
 [HttpPost]
    public ActionResult FileUpload(HttpPostedFileBase articleFile)
    {
        IndexModel model = new IndexModel();

        // file upload logic here

        model.FileUploadMessage = "message";

        return View("Index", model);
    }
return RedirectToAction("Index", model);