向T4MVC生成的链接添加全局查询字符串参数

时间:2017-10-17 15:21:39

标签: asp.net-mvc t4mvc

如何向T4MVC添加一个钩子,这样当我使用T4MVC获得一个动作链接时,它会检查当前请求是否有一个参数,比如说PIN = 1234。如果存在,我希望将此参数添加到生成的链接中。

1 个答案:

答案 0 :(得分:0)

我为UrlHelper创建了一个扩展方法,它包含了UrlHelper的T4MVC扩展方法。这为从T4MVC生成的每个链接添加了所需的附加参数。

public static class T4MVCHelpers
{
    /// <summary>
    /// Returns a T4MVC generated url, passing along PIN
    /// </summary>
    public static string ActionUrl(this UrlHelper urlHelper, ActionResult result)
    {
        var pin = urlHelper.RequestContext.HttpContext.Request["Pin"];
        if (!string.IsNullOrEmpty(pin))
        {
            result.AddRouteValue("Pin", pin);
        }
        return urlHelper.Action(result);
    }
}

然后我总是称这个包装方法而不是T4MVC方​​法

var Url.ActionUrl(MVC.SomeController.Index(1));

现在取决于请求网址。如果请求的url没有pin参数,它将如下所示

/SomeController/Index?param1=1

现在取决于请求网址。如果请求网址的PIN = 123,则会显示如下

/SomeController/Index?param1=1&PIN=123