Monorail中的Helper是綁定在Controller上的
形如:[Helper(typeof(ChHelper))]
abstract public class BaseBlockController : SmartDispatcherController{
}
但本身Helper是使用在View中的,所以 Monorail這種定義方式 略微違背了分離之道
那麼Asp.net MVC中是如何綁定自訂的Helper的呢?
其實Asp.net MVC的View也有代碼檔案即類似 index.aspx.cs
代碼檔案繼承於ViewPage
下面用一個執行個體來講
我首先我自訂一個Helper
實現了對字串的一些小擴充public class StringHelper
{
public string Red(string str) {
return string.Format(@"<span style=""color:red"">{0}</span>",str);
}
public string Green(string str) {
return string.Format(@"<span style=""color:green"">{0}</span>", str);
}
}
那麼我們怎樣才能在View使用它呢?
我們可以在View的cs中寫以下代碼 public StringHelper Str {
get;
set;
}
即為public partial class Index : ViewPage
{
public StringHelper Str {
get;
set;
}
}
這樣我們就可以在View中使用<%=Str.Red(ViewData["title"])%>
這樣的代碼了
如果這個Helper你想不僅在此一個檔案中使用
那麼可以通過將屬性 寫在一個BaseViewPage的基類中 然後所有的View都繼承於自訂的BaseViewPage來實現
同樣的,Master檔案中也可以通過類似的方法來完成使用自訂的Helper