【问题标题】:asp.net mvc submit form and show all form's parameters in urlasp.net mvc 提交表单并在 url 中显示所有表单的参数
【发布时间】:2012-01-16 23:02:43
【问题描述】:

我的视图上有一个表单和一个相应的提交按钮。该表单负责为某些优惠搜索选择选项。主页网址如下所示:

http://localhost/

当我单击提交按钮时,会调用适当的控制器操作。但是,我希望所有表单的参数都显示在 url 中(例如,有可能在 2 个人之间共享链接,他们将获得相同的结果)。 因此,例如,我怎样才能实现(例如)这样的事情:

http://localhost/?startDate=20120215&endDate=20120230&catalog=ISA

【问题讨论】:

    标签: asp.net-mvc-3 form-submit


    【解决方案1】:

    如果您将表单的方法设为 GET,则所有变量都将成为查询字符串的一部分。

    您可以使用此重载来更改表单的请求类型:

    FormExtensions.BeginForm Method (HtmlHelper, String, String, FormMethod)

    或者,如果您使用 RedirectToAction,您可以将参数作为对象传递:

    Controller.RedirectToAction Method (String, Object)

    【讨论】:

    • 是的,我试过这个,但是在我的控制器动作被调用后,我使用 RedirectToAction 方法重定向到不同控制器的动作,在视图中我的结果被列出
    【解决方案2】:

    您应该指定表单使用 GET http 请求(而不是 post)提交,并指定您希望重定向到的操作,这样您就不必使用 RedirectToAction。

    例如:

    控制器:

    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }
    
        public ActionResult NextAction(IndexModel model)
        {
            return View();
        }
    }
    

    型号:

    public class IndexModel
    {
        public string StartDate { get; set; }
    
        public string EndDate { get; set; }
    
        public string Catalog { get; set; }
    }
    

    查看:

    @model MvcApplication22.Models.IndexModel
    
    @using (Html.BeginForm("NextAction", "Home", FormMethod.Get))
    {
        <p>Start Date: @Html.EditorFor(m => m.StartDate)</p>
        <p>End Date: @Html.EditorFor(m => m.EndDate)</p>
        <p>Catalog: @Html.EditorFor(m => m.Catalog)</p>
        <input type="submit" value="submit" />
    }
    

    但请注意,在 GET http 请求中对系统进行任何更改并不是最佳做法。如果要进行任何更改,则应在 POST 请求中执行这些更改。

    【讨论】:

      【解决方案3】:

      使用httpGET 方法提交表单,因此您的表单呈现的输出将类似于

      <form method="get">...</form>
      

      【讨论】:

        猜你喜欢
        • 2023-04-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-07
        相关资源
        最近更新 更多