发生验证错误时保留QueryString参数

时间:2011-06-27 09:54:44

标签: asp.net-mvc validation asp.net-mvc-3 query-string

我有一个上传文件表单,该文件有(名称nvarchar,FileData varbinary(max))

Name和FileData是必填字段

由于某种原因,FileData的验证(使用Required属性)不起作用,因此我在互联网上搜索并找到了一个Html Helper扩展方法,该方法呈现输入(文件)并可以验证它。

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

您可能会注意到,我无法使用RedirectToAction,我必须return View()以便验证摘要可以显示错误(并且希望名称字段保持其值)。

2 个答案:

答案 0 :(得分:2)

简短的回答是,您无法以您希望的方式返回视图,并保留查询字符串参数。

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

这样,当您return View()时,您就可以访问您传递的模型中的返回网址。

答案 1 :(得分:0)

这是actually possible(致谢Ivan Korytin)。您必须将参数作为表单操作的一部分(我对其进行了增强,使其可以简单地重复查询字符串):

<form action="@Url.Action("CreateEntity", "Employee")?@(Request.QueryString)"
  enctype="multipart/form-data" method="POST">

执行以下命令时,查询字符串(和GET参数)现在将保留:

[HttpPost]
public ActionResult MyAction(MyAction model)
{
    if (!ModelState.IsValid)
    {
        return View(model);
    }