【发布时间】:2017-02-25 09:58:26
【问题描述】:
我在提交时将 <input> 值绑定到 beginForm GET 操作的路由中遇到了一点问题。
首先,相关代码:
[Route("Company/{companyID:int}/MarketOffers/{PagingParam.PageNumber=1}")]
public ActionResult MarketOffers(int companyID, PagingParam pagingParam)
* 这是我正在处理的行动声明。 PagingParam 具有 int 类型的属性 PageNumber。
@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 时,我可以做一些事情来自动生成所需的链接吗?
【问题讨论】:
标签: c# asp.net-mvc