【问题标题】:T4MVC Optional Parameter Inferred From Current Context从当前上下文推断的 T4MVC 可选参数
【发布时间】:2012-10-15 21:25:57
【问题描述】:

我已经在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 被保留并且 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>

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

任何见解将不胜感激。

2012 年 10 月 16 日更新

代码:

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

生成的网址:

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

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

【问题讨论】:

    标签: c# asp.net-mvc url-routing t4mvc


    【解决方案1】:

    根据我从在线资源中拼凑出来的信息,这种行为不是 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>
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-05
        • 1970-01-01
        • 2018-11-08
        • 1970-01-01
        • 2016-05-29
        相关资源
        最近更新 更多