MVC 从 url 中隐藏路由值表单帖子

本文关键字:表单 路由 隐藏 url MVC | 更新日期: 2023-09-27 17:55:41

在窗体上使用多个步骤,不同的视图共享一个模型。

在我的第二个步骤表单帖子提交时,我正在传递我的模型以保持状态。

<% using (Html.BeginForm("StepTwo", "Home", Model, FormMethod.Post, new { id = "restrictionForm" }))   { %>

但是我发现当我点击提交并且它以我想要的方式工作时,我的整个模型及其属性现在都列在 url 中,这是不可取的。

[Authorize]
[HttpPost]
[ActionName("StepTwo")]
[ValidateAntiForgeryToken]
public ActionResult StepTwoPost(PostcodesModel model)
{
    try
    {
        _Provider.AddNewRestriction(model.Postcode, model.SelectedRestriction, model.RestrictionDescription, model.WildcardID);
        return View("StepThree", model);
    }
    catch(Exception ex)
    {
        ViewBag.PostCodeErrors = "<div class='"errorMessage'">Error inserting restriction " + model.Postcode + ".</div><p>" + ex.Message + "</p>";
        return View(model);
    }
}

无论如何,现在以这种方式在URL中显示模型?

http://localhost:/Home/StepThree?Postcode=1234&.....

MVC 从 url 中隐藏路由值表单帖子

你能发布完整的视图吗?

您如何呈现模型值? 如果您在提交按钮中将它们呈现为路由数据,则会导致它们出现在 URL 上,您应该将它们呈现为 HTML 元素中的模型 例如,文本框"或"隐藏",这些值将作为表单数据发布