Asp.net mvc 发生验证错误时持久化QueryString参数

Asp.net mvc 发生验证错误时持久化QueryString参数,asp.net-mvc,validation,asp.net-mvc-3,query-string,Asp.net Mvc,Validation,Asp.net Mvc 3,Query String,我有一个上传文件的形式,该文件有(名称nvarchar,FileData varbinary(max)) 名称和文件数据是必填字段 出于某种原因,FileData的验证(使用Required属性)不起作用,所以我搜索了internet,找到了一个Html帮助程序扩展方法,它可以呈现输入(文件)并对其进行验证 但问题是,当我将错误添加到模型状态并且return View()查询字符串中的returnUrl消失时,在这种情况下,如何持久化returnUrl和/或其他一些查询字符串变量 您可能会注意到

我有一个上传文件的形式,该文件有(名称nvarchar,FileData varbinary(max))

名称和文件数据是必填字段

出于某种原因,FileData的验证(使用Required属性)不起作用,所以我搜索了internet,找到了一个Html帮助程序扩展方法,它可以呈现输入(文件)并对其进行验证

但问题是,当我将错误添加到模型状态并且
return View()
查询字符串中的returnUrl消失时,在这种情况下,如何持久化returnUrl和/或其他一些查询字符串变量


您可能会注意到,我不能使用
RedirectToAction
,我必须
返回视图()
,以便验证摘要可以显示错误(希望名称字段保持其值)。

简单的回答是,您不能以您喜欢的方式返回视图,也不能保留查询字符串参数

我要做的是将返回URL存储为视图模型的一部分

这样,当您
返回视图()
时,您就可以访问所传递模型中的返回URL。

这是(归功于Ivan Korytin)。您必须将参数作为表单操作的一部分放置(我已经对其进行了增强,以简单地重复查询字符串):


很好的解决方案,没有尝试过,但可以看到它的工作原理,当我有很多Url参数时,它们都可以成为视图模型的一部分,谢谢。
<form action="@Url.Action("CreateEntity", "Employee")?@(Request.QueryString)"
  enctype="multipart/form-data" method="POST">
[HttpPost]
public ActionResult MyAction(MyAction model)
{
    if (!ModelState.IsValid)
    {
        return View(model);
    }