我的视图中有一个表单和相应的提交按钮。表单负责选择某些商品搜索的选项。主页网址如下:
http://localhost/
当我点击提交按钮时,会调用适当的控制器操作。但是,我希望所有形式的参数都在url中公开(因此有可能在两个人之间共享链接,并且它们将具有相同的结果)。 例如,我如何实现(例如)类似的东西:
http://localhost/?startDate=20120215&endDate=20120230&catalog=ISA
答案 0 :(得分:3)
如果您使用表单的方法GET,则所有变量都将成为查询字符串的一部分。
您可以使用此重载来更改表单的请求类型:
FormExtensions.BeginForm Method (HtmlHelper, String, String, FormMethod)
或者,如果您使用的是RedirectToAction,则可以将参数作为对象传递:
答案 1 :(得分:1)
您应该指定表单使用GET http请求(而不是发布)提交,并指定您希望重定向到的操作,这样您就不必使用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请求中执行这些更改。
答案 2 :(得分:0)
使用http
的{{1}}方法提交表单,这样您的表单的呈现输出就像
GET