我希望表单将值从隐藏的输入传递到服务器,我还希望它将URL构建为 “本地主机:9392 /排行/索引/ 2 rankingType = someValue中&安培; ageGroup = someValue中&安培;周= someValue中”
但它显示为“localhost:9392 / Ranking / Index / 2?rankingType = rankingTypeID& ageGroup = ageGroupID& week = week”
@using (Html.BeginForm("Index", "Ranking", new { id = Model.CurrentRanking, rankingType = "rankingTypeID", ageGroup = "ageGroupID", week = "week"}, FormMethod.Post, new { id = "ageGroupForm" }))
{
<input id="ageGroupID" name="ageGroup" hidden />
<input id="rankingTypeID" name="rankingType" hidden />
<input id="week" name="week" hidden />
}
为什么?如何传递值并将它们显示为查询字符串?
答案 0 :(得分:0)
但它显示为“localhost:9392 / Ranking / Index / 2?rankingType = rankingTypeID&amp; ageGroup = ageGroupID&amp; week = week”
那是因为那些正是你正在使用的字符串值:
new { id = Model.CurrentRanking, rankingType = "rankingTypeID", ageGroup = "ageGroupID", week = "week"}
为什么你要为已经拥有的确切表单输入设置查询字符串值,这不是很清楚:
<input id="ageGroupID" name="ageGroup" hidden />
<input id="rankingTypeID" name="rankingType" hidden />
<input id="week" name="week" hidden />
如果您要完成的是将这些值放在查询字符串上(作为GET请求)而不是在请求正文中(作为POST请求),那么您所要做的就是更改表单方法到GET:
@using (Html.BeginForm("Index", "Ranking", new { id = Model.CurrentRanking }, FormMethod.Get, new { id = "ageGroupForm" }))
HTML表单输入会自动添加到请求中,这就是表单的工作方式。您无需尝试手动执行此操作。
虽然你做这件事很奇怪。您的输入是隐藏的,这通常意味着您不希望用户关注它们。但是你也在URL上显示它们,这可能会让用户感到困惑(或者甚至可能对用户产生怀疑)。您也没有为这些隐藏的输入设置任何值,除非您在此处未包含其他内容,这样做了吗?
无论哪种方式,您的表单都会自动在提交的请求中包含其输入。
答案 1 :(得分:0)
试试这段代码:
@using (Html.BeginForm("Index", "Ranking"))
{
<input id="ageGroupID" name="ageGroup" hidden />
<input id="rankingTypeID" name="rankingType" hidden />
<input id="week" name="week" hidden />
}
并在您的操作方法中,将其装饰为:
public ActionResult Index(string ageGroupID, string rankingTypeID, string week){}