我不知道的方式做到这一点,你必须访问路由至少是使自己的帮手。除非您的业务对象知道注册路线,否则您无法脱离一些硬编码。
这里是你会如何限制网址虽然的硬编码...
代码与在对象的方法的所有相关位的网址..
class Event
{
public void SendEmail()
{
var url = string.Format("http://myurl.com/r/Event?eventId={0}", EventId);
//send emails...
}
}
注意/r/Event
件的网址。这将是一个RController
的地图,它将负责采取任意的,组成的链接并发送301 Permanent Redirect
并通过路径引擎使用当前路线创建真实的网址。通过这种方式,您只是对实用程序控制器url进行硬编码,而不是对真实页面的不断发展的控制器操作。
class RController : Controller
{
public ActionResult Event(int eventId)
{
Response.StatusCode = (int)HttpStatusCode.MovedPermanently;
Response.RedirectLocation = Url.Action("Details", "Event", new { eventId = eventId });
return null;
}
public ActionResult Register(int eventId)
{
Response.StatusCode = (int)HttpStatusCode.MovedPermanently;
Response.RedirectLocation = Url.Action("Register", "Event", new { eventId = eventId });
return null;
}
}
它只是感觉比硬编码一堆不同的控制器/行动,你可能会决定稍后重命名一点。把它看作你自己的小TinyUrl就像服务一样。
来源
2010-05-21 18:45:06
Jab
我目前正在研究asolution,我将一个函数传递给生成url的对象。完成后,我会发布我的解决方案。 感谢伟大的想法! – 2010-05-21 20:04:22