我在提交时将<input>
值绑定到beginForm GET操作的路由中有一点问题。
首先,相关代码:
[Route("Company/{companyID:int}/MarketOffers/{PagingParam.PageNumber=1}")]
public ActionResult MarketOffers(int companyID, PagingParam pagingParam)
*这是我正在处理的行动声明。 PagingParam的属性PageNumber为int类型。
@using (Html.BeginForm(RouteDataHelper.ActionName, RouteDataHelper.ControllerName, FormMethod.Get, new { companyID = Model.Info.CompanyID }))
*在BeginForm中我只使用companyID,因为PageNumber会根据用户点击网站的内容而有所不同,因此在此处不提供。
<input id="PagingParam.PageNumber" name="PagingParam.PageNumber" type="hidden" value="1">
*这是输入哪个值应附加到URL。它在你上面看到的生成代码的形式里面。在提交表单之前,值会通过javascript更改。
当我输入链接时:
http://localhost:38120/Company/2037/MarketOffers/3
*一切都好。 PagingParam.PageNumber将其值设置为3.这是期望的行为。
但是当我使用PagingParam.PageNumber输入字段提交表单时,我的URL看起来像:
http://localhost:38120/Company/2037/MarketOffers?PagingParam.PageNumber=2
而不是
http://localhost:38120/Company/2037/MarketOffers/2
我确切地知道我可以使用javascript + JQuery处理它并更改表单操作值,但我感觉有一种方法可以在MVC中自动执行此操作而无需编写JavaScript。
所以问题是:当我传递表格时,我可以做一些事情来自动生成所需的链接吗(例如)“/ Company / 2037 / MarketOffers”并将PagingParam.PageNumber附加到生成的URL而不编写JavaScript?< / p>
答案 0 :(得分:2)
生成GET的表单中的所有输入都将其值添加为查询字符串参数,因为浏览器不知道服务器上的路由。
如果不使用javascript修改表单的../Company/2037/MarketOffers/3
属性,则无法生成action