2

我已经在T4MVC OptionalParameter values implicitly from current context中阅读了关于此的另一篇文章,并且我正在使用最新的 T4MVC (2.11.1),它应该已经修复。我什至检查了它以确保它在那里 - 并且这是。

我仍在根据当前上下文填写可选参数。

例如:假设我有一个列表,默认情况下按一个人的姓氏排序。我可以选择按名字而不是 URL 来订购

http://localhost/list/stuff?orderby=firstname

当我在该页面时,我想使用代码返回按名字排序:

@Html.ActionLink("order by last name", MVC.List.Stuff(null))

我想要的链接很简单

http://localhost/list/stuff

没有任何参数来保持 URL 简单和简短 - 在操作中调用默认行为。但相反,orderby被保留并且 url 仍然是

http://localhost/list/stuff?orderby=firstname

任何帮助都会很棒。我知道在最一般的情况下,这确实删除了查询参数——也许我确实有一个特定的情况,它没有被删除。我发现只有当我在 RenderPartial 中包含的页面中有 URL 时才会发生这种情况。

我的实际代码是

<li>@Html.ActionLink("Recently Updated",  MVC.Network.Ticket.List(Model.UI.AccountId, "LastModifiedDate", null, null, null, null, null))</li>
<li>@Html.ActionLink("Recently Created",  MVC.Network.Ticket.List(Model.UI.AccountId, "CreatedDate", null, null, null, null, null))</li>
<li>@Html.ActionLink("Most Severe",       MVC.Network.Ticket.List(Model.UI.AccountId, "MostSevere", null, null, null, null, null))</li>
<li>@Html.ActionLink("Previously Closed", MVC.Network.Ticket.List(Model.UI.AccountId, "LastModifiedDate", null, "Closed", null, null, null))</li>

当有人单击 Previously Closed 并转到?status=closed时,就会出现问题。当他们单击最近更新时,我希望状态参数消失(传递了一个空值)。但是 ?status=close 保留在生成的 url 中。

任何见解将不胜感激。

2012 年 10 月 16 日更新

编码:

@html.action("Profile", MVC.Profile.Index())

生成网址:

http://localhost:55059/network/ticket/14441327-128b-e111-af72-0050569e0924?Controller=profile&Action=index

这只发生在特定页面上。这其实挺危险的……

4

2 回答 2

0

从我可以从在线资源中拼凑出来的内容来看,这种行为不是归因于 T4MVC,而是归因于 MVC 框架本身。关于 T4MVC 使用哪些辅助函数的信息。在我的项目中,我刚刚切换到 vanilla MVC 语法。使用传入的匿名对象进行routeValues监控将使您能够显式控制查询字符串参数。执行以下操作将始终有效:

@Html.ActionLink("Recently Updated", "Ticket", "Network", new { Id = Model.UI.AccountId, orderby = "LastModifiedDate" }, null))

...并像这样生成 HTML:

<a href="http://localhost:55059/Network/Ticket/14441327-128b-e111-af72-0050569e0924?orderby=LastModifiedDate">Recently Updated</a>
于 2013-10-15T16:29:01.407 回答
0

如果有人仍然面临这个问题,这是我找到的解决方案

http://yaweriqbal.wordpress.com/2014/05/25/actionlink-passing-parameter-as-querystring/

于 2014-05-25T13:37:06.790 回答