国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

MVC MODEL Attribute 操縱速記

2019-11-17 02:02:14
字體:
來源:轉載
供稿:網友

MVC MODEL Attribute 操縱速記

目的:

擴充Attribute

任意讀取并Render 需要的Attribute

?

?

用法:

@Html.ParaLabelFor(x=>x.ServiceName):@Html.ParaNameFor(x=>x.ServiceName)

?

?

?

?

代碼:

?

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Linq;

usingSystem.Web;

usingSystem.Web.Mvc;

?

namespaceCardLanPay

{

publicstaticclassMyHtmlHelper

{

//public static System.Web.Mvc.MvcHtmlString DisplayParaName(this System.Web.Mvc.HtmlHelper helper, string paraName)

//{

// return System.Web.Mvc.MvcHtmlString.Create(Resources.AlipayParaNameResource.ResourceManager.GetString(paraName));

//}

?

publicstaticSystem.Web.Mvc.MvcHtmlStringParaNameFor<TModel, TValue>(thisSystem.Web.Mvc.HtmlHelper<TModel>self, System.Linq.ExPRessions.Expression<Func<TModel, TValue>>expression)

{

varmetadata=ModelMetadata.FromLambdaExpression(expression, self.ViewData);

varPropertyName=metadata.PropertyName;

if (PropertyName==null)

returnMvcHtmlString.Create("");

switch (metadata.ContainerType.FullName)

{

case"CardLanPay.Areas.Alipay.Models.BaseParaModel":

returnMvcHtmlString.Create(string.Format(@"<span>{0}</span>", Resources.AlipayParaNameResource.ResourceManager.GetString(PropertyName)));

default:

returnMvcHtmlString.Empty;

}

}

publicstaticSystem.Web.Mvc.MvcHtmlStringParaTextFor<TModel, TValue>(thisSystem.Web.Mvc.HtmlHelper<TModel>self, System.Linq.Expressions.Expression<Func<TModel, TValue>>expression)

{

varmetadata=ModelMetadata.FromLambdaExpression(expression, self.ViewData);

varPropertyName=metadata.PropertyName;

if (PropertyName==null)

returnMvcHtmlString.Empty;

switch (metadata.ContainerType.FullName)

{

case"CardLanPay.Areas.Alipay.Models.BaseParaModel":

returnMvcHtmlString.Create(string.Format(@"<span>{0}</span>", Resources.AlipayParaDisplayNameResource.ResourceManager.GetString(PropertyName)));

default:

returnMvcHtmlString.Empty;

}

}

?

publicstaticSystem.Web.Mvc.MvcHtmlStringParaLabelFor<TModel, TValue>(thisSystem.Web.Mvc.HtmlHelper<TModel>self, System.Linq.Expressions.Expression<Func<TModel, TValue>>expression)

{

?

varmetadata=ModelMetadata.FromLambdaExpression(expression, self.ViewData);

varPropertyName=metadata.PropertyName;

if (PropertyName==null)

returnMvcHtmlString.Empty;

stringtext="";

switch (metadata.ContainerType.FullName)

{

case"CardLanPay.Areas.Alipay.Models.BaseParaModel":

text=Resources.AlipayParaDisplayNameResource.ResourceManager.GetString(PropertyName);

break;

default:

break;

}

if (string.IsNullOrEmpty(text))

{

returnMvcHtmlString.Empty;

?

}

else

{

TagBuildertagBuilder=newTagBuilder("label");

tagBuilder.Attributes.Add("for", TagBuilder.CreateSanitizedId(self.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(PropertyName)));

tagBuilder.SetInnerText(text);

returnMvcHtmlString.Create(tagBuilder.ToString());

?

}

}

?

?

}

?

?

#region屬性元數據管理

?

publicabstractclassMetadataAttribute : Attribute

{

publicabstractvoidProcess(ModelMetadatamodelMetaData);

}

?

publicclassParaNameModelMetadataProvider : DataAnnotationsModelMetadataProvider

{

protectedoverrideModelMetadataCreateMetadata(

IEnumerable<Attribute>attributes,

TypecontainerType,

Func<object>modelaccessor,

TypemodelType,

stringpropertyName)

{

varmodelMetadata=base.CreateMetadata(attributes, containerType, modelAccessor, modelType, propertyName);

attributes.OfType<ParaNameAttribute>().ToList().ForEach(x=>x.Process(modelMetadata));

returnmodelMetadata;

}

}

?

?

/// <summary>

/// 參數名特性類

/// </summary>

/// <remarks>

/// 用于給軟件內部的屬性指定支付寶接口使用的參數名

/// </remarks>

publicclassParaNameAttribute : MetadataAttribute

{

?

privatereadonlystringparaName;

?

publicParaNameAttribute(stringparaName)

{

this.paraName=paraName;

}

?

publicstringParaName

{

get { returnparaName; }

}

?

publicoverridevoidProcess(ModelMetadatamodelMetaData)

{

modelMetaData.AdditionalValues.Add("ParaName", Resources.AlipayParaNameResource.ResourceManager.GetString(ParaName));

}

?

}

?

#endregion

?

?

publicclassParaTextAttribute : System.ComponentModel.DisplayNameAttribute

{

publicParaTextAttribute(stringdisplayName)

{

DisplayNameValue=Resources.AlipayParaDisplayNameResource.ResourceManager.GetString(displayName);

}

}

}

?

?

?

參考:

http://stackoverflow.com/questions/3885796/get-displayname-attribute-without-using-labelfor-helper-in-asp.net-mvc

?

http://blog.csdn.net/li_xiao_ming/article/details/10134177

?

http://m.survivalescaperooms.com/wlitsoft/archive/2012/11/30/mvc-custom-htmlhelper.html


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 贵溪市| 县级市| 灵台县| 盐池县| 上虞市| 衡水市| 高台县| 镇江市| 屯门区| 韩城市| 环江| 阳曲县| 读书| 新平| 澄城县| 会同县| 阜平县| 伊宁县| 宿迁市| 韶关市| 静乐县| 百色市| 泉州市| 开鲁县| 沈丘县| 泸水县| 东丽区| 霸州市| 海晏县| 大安市| 资阳市| 张掖市| 岗巴县| 临泽县| 凌云县| 轮台县| 商洛市| 绥芬河市| 南江县| 邵东县| 揭阳市|