国产探花免费观看_亚洲丰满少妇自慰呻吟_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://www.survivalescaperooms.com/wlitsoft/archive/2012/11/30/mvc-custom-htmlhelper.html


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 特克斯县| 东至县| 惠州市| 射洪县| 华蓥市| 青州市| 屏南县| 永嘉县| 孟村| 醴陵市| 鄱阳县| 时尚| 富川| 红桥区| 新泰市| 临桂县| 鄢陵县| 丽江市| 思茅市| 济阳县| 贺兰县| 靖远县| 邵阳市| 当涂县| 大城县| 泸西县| 多伦县| 临桂县| 阳城县| 遂平县| 富平县| 穆棱市| 甘孜县| 黄骅市| 栖霞市| 扶沟县| 额尔古纳市| 大同市| 淄博市| 布拖县| 沧源|