使用MvcContrib的FormHelper
?MvcContrib的FormHelper提供了三大Helper
?下載
?下載后將MvcContrib.dll與MvcContrib.Samples.FormHelper.dll引用到Asp.net MVC工程
在Web.Config
pages.namespaces加入以下節點
????????????????<add?namespace="System.Web.Mvc"/>
????????????????<add?namespace="System.Linq"/>
????????????????<add?namespace="MvcContrib.UI"/>
????????????????<add?namespace="MvcContrib.UI.Html"/>
????????????????<add?namespace="MvcContrib"/>
Html輔助Helper
這是一系列方便使用的HtmlHelper解決了一些常用的標簽如果通過HtmlHelper生成不方便的問題。
Pv4的ViewData與Html.TextBox的名字對應綁定雖然已經提供了方便,但是比起MonoRail還略顯不足,所以在MvcContrib中將這一智能方式又帶了回來
如Controller中聲明一對象
????????????Person?person?=?new?Person();
????????????person.Id?=?1;
????????????person.Name?=?"Jeremy";
????????????person.RoleId?=?2;
????????????person.Gender?=?Gender.Male;
????????????ViewData["person"]?=?person;
則可以在View中使用以下Helper
<%=?Html.Form().TextField("person.Name")?%>?這樣就是直接綁定到person.Name了
或者
<%=?Html.Form().TextArea("person.Name",?new?Hash(rows?=>?10,?cols?=>?40))?%>
?當然,FormHelper提供了更多靈活的方式來設置標簽的屬性
<%=?Html.Form().TextField("person.Name",?new?Hash(@class?=>?"demo1"))?%>
?當然除了input-text和textarea外,其它標簽也可以進行此類綁定
?
Hidden:<%=?Html.Form().HiddenField("person.Id")?%>
CheckBox:
<%=?Html.Form().CheckBoxField("person.IsDeveloper")?%>
<%=?Html.Form().CheckBoxList("accessLevel",?ViewData["roles"],?"Name",?"Id")?%>
<%=?Html.Form().CheckBoxList("accessLevel2",?ViewData["roles"],?"Name",?"Id").ToFormattedString("{0}<br?/>")?%>這種設置輸出格式的方法非常方便
甚至可以用迭代器輸出
<%?foreach(var?checkbox?in?Html.Form().CheckBoxList("accessLevel3",?ViewData["roles"],?"Name",?"Id"))?{?%>
????????<%?if(checkbox.Value.Equals("2"))?{?checkbox.Checked?=?true;?}%>????
????????<%=?checkbox?%>
????<%?}?%>????
Radio:
<%=?Html.Form().RadioField("person.IsDeveloper",?true,?new?Hash(label?=>?"是"))?%>
<%=?Html.Form().RadioField("person.IsDeveloper",?false,?new?Hash(label?=>?"否"))?%>
(設置Label內容也是如此方便)
Select:
<%=?Html.Form().Select("person.RoleId",?ViewData["roles"],?"Name",?"Id",?new?Hash(firstOption?=>?"Please?select"))?%>
可以輕松地實現首選項的設置及綁定
更方便的是可以直接綁定一個Enum
<%=?Html.Form().Select<Gender>("person.Gender")?%>
對于多選也很方便,只是看起來代碼有點多
<%=?Html.Form().Select("listbox1",?ViewData["roles"],?"Name",?"Id",?new?Hash(size?=>?5,?multiple?=>?true,?selectedValue?=>?new[]?{?1,?2?}?))?%>
?
?對于Form標簽
也可以用方便的打操作來完成標簽的閉合及其中 屬性的設置,有一點VB中With的味道
?
????<%?Html.Form().For<Person>((Person)ViewData["person"],?"/home/index",?form?=>?{?%>????????<%?form.Attributes.Add("class",?"foo");?%>
????????姓名:?<%=?form.TextField("Name")?%><br?/>
????????開發者?:?<%=?form.CheckBoxField("IsDeveloper")?%><br?/><br?/>
????????<%=?form.Submit()?%>
????<%});?%>
?驗證Helper
?
一直以來驗證控件都是一個比較好用的控件,只是到MVC之后,不能使用控件了,于是大家只好各忙各的JS。
?
MvcContrib中提供了一套基本與WebForm中相同的驗證控件,它們的使用方法如下:
<%?using?(Html.Form("Home",?"ValidationHelper",?FormMethod.Post,?Html.Validation().FormValidation("val1")))?{?%>
.
<%}%>
MvcContrb中提供了以下的驗證Helper:
?
<%=?Html.Validation().RequiredValidator("nameForRequiredValidator",?"nameForRequired",?"姓名必填.",?"val1")?%>
<%=?Html.Validation().RegularExpressionValidator("nameForRegexValidator",?"nameForRegex",?"[^\d]*",?"姓名不能包含數字.",?"val1")?%>
年齡:?<%=?Html.TextBox("ageForRange")?%>
<%=?Html.Validation().RangeValidator("ageForRangeValidator",?"ageForRange",?"1",?"120",?ValidationDataType.Integer,?"只能是1-120之間.",?"val1")?%>
確認:?<%=?Html.TextBox("secondCompare")?%>
<%=?Html.Validation().CompareValidator("compareValidator",?"firstCompare",?"secondCompare",?ValidationDataType.String,?ValidationCompareOperator.NotEqual,?"兩次密碼不一致",?"val1")?%>
????????????function?ValidateTextEquals(source,?args)?{?
????????????????args.IsValid?=?(args.Value?==?'mvc');
????????????}
????????</script>
????????<%=?Html.TextBox("textCustom")?%>
????????<%=?Html.Validation().CustomValidator("textCustomValidator",?"textCustom",?"ValidateTextEquals",?"文本必須是'mvc'.",?"val1")?%>
????<%=?Html.SubmitButton("submit",?"val1")?%>
?ok了這樣就實現了表單的驗證
?
?表格Helper
?
<%????Html.Grid<Person>(
????????"people",?
????????new?Hash(empty?=>?"沒有數據",?style?=>?"width:?100%"),
????????column?=>?{
????????????column.For(p?=>?p.Id,?"ID?Number");//設置列名
????????????column.For(p?=>?p.Name);
????????????column.For(p?=>?p.Gender);//正常顯示
????????????column.For(p?=>?p.RoleId).Formatted("角色ID:?{0}");//format格式也很好
????????????column.For("Custom?Column").Do(p?=>?{?%>
????????????????<td>這是For的自定義形式</td>????
????????????<%?});
????????}
????);
%>
?
?
轉載于:https://www.cnblogs.com/chsword/archive/2008/08/11/mvccontrib_formhelper.html
總結
以上是生活随笔為你收集整理的使用MvcContrib的FormHelper的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IDEA 导出配置方法
- 下一篇: MySQL入门-3:安装与客户端工具