很久沒寫博客了,最近只看博客不寫的習慣很很差啊。html
好了,最近的項目中大量的用到了表單,不少表單有特殊的編寫,可是在該項目中又有不少重複的地方,這個時候若能封裝成htmlhelper將大大下降工做量的。
下面給出基本的使用模型,備忘express
using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Web; using System.Web.Mvc; //引入下面的命名空間後,就能夠在view中直接@出來了 namespace System.Web.Mvc { public static class FormHtmlHelper { private const string editorwidth = "100"; private const string editorheight = "100"; //給下面的方法指定第一個參數爲this HtmlHelper helper,這樣就能夠在@Ht中 //點出來了,不然你還得@[自定義類].[你的方法]。下面的方法看上去須要傳進去兩個值, //實際上只要@Html.就能夠點出來了 public static MvcHtmlString NecessaryLabeler(this HtmlHelper helper,string name) { var ntag = new TagBuilder("span"); ntag.AddCssClass("red"); ntag.SetInnerText("*"); var nametag = new TagBuilder("span"); //tag.AddCssClass(""); nametag.SetInnerText(name); return new MvcHtmlString(ntag.ToString()+nametag.ToString()); } //下面的方法能夠把視圖的model傳進去,獲取值的方法看下面的lamda表達式。。。 public static MvcHtmlString DisabledEditorFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression) { object data = ModelMetadata.FromLambdaExpression<TModel, TValue>(expression, html.ViewData).Model; if (data == null) { data=""; } //to do what you want! } } }