从Code Behind生成MVC中的Url

Sta*_*ker 7 c# asp.net-mvc-3

让我们说我在一个动作方法,我想生成这样的字符串:

http://www.myhost.com/Home/Index?Id=1
Run Code Online (Sandbox Code Playgroud)

我想将此保存到DB,所以我想知道是否有任何正式的方法来生成它而不是自己构建它.

我正在使用MVC3

提前致谢.

Dar*_*rov 15

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

public ActionResult Foo()
{
    string url = Url.Action("Index", "Home", new { id = 1 });
    // TODO: save to DB
}
Run Code Online (Sandbox Code Playgroud)

如果你需要一个绝对网址,只需使用正确的重载:

string url = Url.Action("Index", "Home", new { id = 1 }, "http");
Run Code Online (Sandbox Code Playgroud)

  • @Stacker,我展示的代码示例是在控制器动作中.控制器动作属于控制器.控制器派生自Controller类.Controller类具有Url属性.这是你应该使用的.您不应该尝试在应用程序的任何位置生成URL,这是我认为您正在做的事情,例如在Model中.如果你的代码的某些部分需要一个url,你应该在控制器中生成这个url并将其作为参数传递给需要它的代码的这部分. (3认同)