【问题标题】:Persisting QueryString parameters when validation error occurs发生验证错误时保留 QueryString 参数
【发布时间】:2011-06-27 09:54:44
【问题描述】:

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

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

    简短的回答是你不能以你想要的方式返回一个视图并且还保留查询字符串参数。

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

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

    【讨论】:

    • 很好的解决方案,还没试过,但可以看到它有效,当我有很多 Url 参数时,它们都可以成为视图模型的一部分,谢谢。
    【解决方案2】:

    这是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);
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多