0
我想在mvc中創建一個自定義屬性,以在視圖中將它的參數用作breadCrumb。asp.net mvc自定義屬性
好,這是屬性
[AttributeUsage(AttributeTargets.All, AllowMultiple = true)]
public class BreadCrumbAttribute : Attribute {
public BreadCrumbAttribute(string title, string parent, string url) {
this._title = title;
this._parent = parent;
this._url = url;
}
#region named parameters properties
private string _title;
public string Title {
get { return _title; }
}
private string _url;
public string Url {
get { return _url; }
}
private string _parent;
public string Parent {
get { return _parent; }
}
#endregion
#region positional parameters properties
public string Comments { get; set; }
#endregion
}
此的代碼屬性
[BreadCrumbAttribute("tile", "parent name", "url")]
public ActionResult Index() {
//code goes here
}
本的呼叫我想如何獲得值的方法。 (這是局部視圖)
System.Reflection.MemberInfo inf = typeof(ProductsController);
object[] attributes;
attributes = inf.GetCustomAttributes(typeof(BreadCrumbAttribute), false);
foreach (Object attribute in attributes) {
var bca = (BreadCrumbAttribute)attribute;
Response.Write(string.Format("{0}><a href={1}>{2}</a>", bca.Parent, bca.Url, bca.Title));
}
不幸的是,該屬性沒有通過實現它的方式獲得調用。雖然,如果我在Class中添加屬性而不是Action方法,它就起作用了。 我怎麼能使它工作?
感謝
你的意思是BreadCrubAttribute將從System.Attribute擴展,我必須創建一個更多的屬性,可以說GetBreadCrumbAttribute這將從ActionFilterAttribute擴展? – StrouMfios 2011-03-23 13:14:06
正確。 GetBreadCrumbAttribute只存在於一個地方(假設你可以將它放在一個BaseController類中,其中所有其他控制器都會下降),並且如我所述,它將負責將它找到的麪包屑放在一起,並將它們放置在控制器的某個位置和/或視圖可以檢索它們。 – 2011-03-23 17:14:40