如何在MVC中构建URL?

时间:2016-07-12 17:39:32

标签: c# asp.net .net routes

我正在使用Url.RouteUrl创建一个网址以返回给我的用户。

var path = Url.RouteUrl(new RouteValueDictionary()
            {
                { "controller", "Home"},
                {"action", "myaction"},
                {"area" , "myarea"},
            });

这会返回一个包含myarea/home/myaction

的精美网址

如果我需要添加一个额外的参数,比如myarea/home/myaction?param1=abc,那怎么办呢?

我试过

var param1Value = "abc";
var path = Url.RouteUrl(new RouteValueDictionary()
            {
                { "controller", "Home"},
                {"action", "myaction"},
                {"area" , "myarea"},
                new {param1 = param1Value },
            });

这似乎不是那种方式。

任何人都可以提出一些方法吗?

3 个答案:

答案 0 :(得分:1)

试试这个:

    Url.Action("myAction","Home", new {area="myarea", param="paramvalue"});

答案 1 :(得分:0)

找到了一种优雅的方式。

var myDesiredUrl = FetchDomainUri();

myDesiredUrl.Path = Url.RouteUrl(new RouteValueDictionary()
{
    { "controller", "Home" },
    { "action", "myAction" },
    { "area" , "myArea" },
});

myDesiredUrl.QueryString.Add("myParam1", param1Value);

答案 2 :(得分:0)

希望这会有所帮助:

return (new RedirectToRouteResult(
                    new System.Web.Routing.RouteValueDictionary(
                        new
                        {
                            controller = "Home",
                            action = "myAction",
                            area = "myArea"
                        })));

如果要为其添加参数,可以在Route Config文件中添加/修改路径图。添加新密钥后,可以在上面的代码中指定值。