C# 从代码隐藏在MVC中生成Url

C# 从代码隐藏在MVC中生成Url,c#,asp.net-mvc-3,C#,Asp.net Mvc 3,假设我在一个action方法中,我想生成如下字符串: http://www.myhost.com/Home/Index?Id=1 我想把它保存到DB,所以我想知道是否有任何正式的方法来生成它,而不是自己构建它 我用的是MVC3 提前感谢。您可以使用控制器的属性: public ActionResult Foo() { string url = Url.Action("Index", "Home", new { id = 1 }); // TODO: save to DB }

假设我在一个action方法中,我想生成如下字符串:

http://www.myhost.com/Home/Index?Id=1
我想把它保存到DB,所以我想知道是否有任何正式的方法来生成它,而不是自己构建它

我用的是MVC3

提前感谢。

您可以使用控制器的属性:

public ActionResult Foo()
{
    string url = Url.Action("Index", "Home", new { id = 1 });
    // TODO: save to DB
}
如果您需要绝对url,只需使用适当的重载:

string url = Url.Action("Index", "Home", new { id = 1 }, "http");

有趣的是,我唯一的Url在System.Security.Policy下;而且它没有行动Method@Stacker,我展示的代码示例位于控制器操作中。控制器操作属于控制器。控制器派生自控制器类。控制器类具有Url属性。这是你应该使用的。您不应该尝试在应用程序中的任何地方生成URL,我认为您正在这样做,例如在模型中。如果代码的某些部分需要url,则应在控制器中生成此url,并将其作为参数传递给需要它的代码的这部分。@DarinDimitrov,我知道这与此答案无关,但如何进行单元测试Foo()?您不需要模拟HttpContext/HttpRequest吗?@olivehour,是的,确切地说,您将模拟HttpContext。