我不知道的方式做到這一點,你必須訪問路由至少是使自己的幫手。除非您的業務對象知道註冊路線,否則您無法脫離一些硬編碼。
這裏是你會如何限制網址雖然的硬編碼...
代碼與在對象的方法的所有相關位的網址..
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