asp.net-mvc - 将路由值传递给 Html.BeginForm
问题描述
我希望表单将隐藏输入中的值传递给服务器,并且我还希望它将 URL 构建为“localhost:9392/Ranking/Index/2?rankingType=SOMEVALUE&ageGroup=SOMEVALUE&week=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 />
}
这是为什么 ?如何传递值并让它们显示为查询字符串?
解决方案
但它显示为“localhost:9392/Ranking/Index/2?rankingType=rankingTypeID&ageGroup=ageGroupID&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 上显示它们,这可能会让用户感到困惑(甚至可能让用户感到怀疑)。您也没有为那些隐藏的输入设置任何值,除非您有其他未包含在此处的内容?
无论哪种方式,您的表单都会自动将其输入包含在提交的请求中。
推荐阅读
- android - Facebook 受众网络竞价整合
- php - 插件 Joomla 3.x 登录后重定向 joomla 用户
- mysql - MySQL 错误:“where 子句”中的“1”中的未知列
- php - 使用 FORM 上传到 S3 存储桶的 AWS PHP 开发工具包
- python - Hvplot AttributeError:“列表”对象没有属性“xy”
- ubuntu - 无法启动铬浏览器,有什么解决办法吗?
- angular - 在 Angular 中编写重定向服务会导致 Null 注入错误
- c++ - BLE Windows 连接的“信号量超时期限已过期”错误
- django - Django:如果对象在带有过滤器的列表中,则使用 manytomany 字段检查模型
- maven - 如何使用 maven 发布插件更新非 pom 文件中的版本