我已经在T4MVC OptionalParameter values implied 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 并且网址仍然是
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>
当有人点击以前关闭并转到?status =已关闭时,就会出现此问题。当他们点击Latest Updated时,我希望status参数消失(传递null)。但是?status = closed会保留在生成的URL中。
非常感谢任何见解。
更新10/16/12
代码:
@html.action("Profile", MVC.Profile.Index())
生成了网址:
http://localhost:55059/network/ticket/14441327-128b-e111-af72-0050569e0924?Controller=profile&Action=index
这只发生在特定页面上。实际上这很危险......
答案 0 :(得分: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>
答案 1 :(得分:0)
如果有人仍然面临这个问题,这就是我找到的解决方案
http://yaweriqbal.wordpress.com/2014/05/25/actionlink-passing-parameter-as-querystring/