Пример #1
0
 private static void FixStrExplain(LabelInShell shell, ref string prefix, ref string postfix)
 {
     if ((shell & LabelInShell.StarBefore) > 0)
     {
         prefix += "<span class='red'>*</span>";
     }
     if ((shell & LabelInShell.StarAfter) > 0)
     {
         postfix += "<span class='red'>*</span>";
     }
     if ((shell & LabelInShell.ColonAfter) > 0)
     {
         postfix += ":";
     }
 }
Пример #2
0
 /// <summary>
 /// 返回一个HTML label标签,标签内容来源于输入的参数中表达式所指定的属性及前后缀
 /// </summary>
 /// <typeparam name="TModel"></typeparam>
 /// <typeparam name="TValue"></typeparam>
 /// <param name="html"></param>
 /// <param name="expression"></param>
 /// <param name="labelText"></param>
 /// <param name="shell"></param>
 /// <returns></returns>
 public static MvcHtmlString LabelFor <TModel, TValue>(this HtmlHelper <TModel> html, Expression <Func <TModel, TValue> > expression, string labelText, LabelInShell shell)
 {
     if (html == null)
     {
         throw new ArgumentNullException("html");
     }
     return(LabelHelper(html, ModelMetadata.FromLambdaExpression <TModel, TValue>(expression, html.ViewData), ExpressionHelper.GetExpressionText(expression), shell, labelText));
 }
Пример #3
0
        /// <summary>
        /// 内部处理
        /// </summary>
        /// <param name="html"></param>
        /// <param name="metadata"></param>
        /// <param name="htmlFieldName"></param>
        /// <param name="shell"></param>
        /// <param name="labelText"></param>
        /// <returns></returns>
        internal static MvcHtmlString LabelHelper(HtmlHelper html, ModelMetadata metadata, string htmlFieldName, LabelInShell shell, string labelText = null)
        {
            string str = labelText ?? (metadata.DisplayName ?? (metadata.PropertyName ?? htmlFieldName.Split(new char[] { '.' }).Last <string>()));

            if (string.IsNullOrEmpty(str))
            {
                return(MvcHtmlString.Empty);
            }
            string prefix  = string.Empty;
            string postfix = string.Empty;

            FixStrExplain(shell, ref prefix, ref postfix);
            str = string.Format("{0}{1}{2}", prefix, str, postfix);
            TagBuilder tagBuilder = new TagBuilder("label");

            tagBuilder.Attributes.Add("for", TagBuilder.CreateSanitizedId(html.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(htmlFieldName)));
            tagBuilder.InnerHtml = str;
            return(new MvcHtmlString(tagBuilder.ToString(TagRenderMode.Normal)));
        }
Пример #4
0
 /// <summary>
 /// 返回一个HTML label标签,标签内容来源于输入的参数中表达式所指定的属性及前后缀
 /// </summary>
 /// <typeparam name="TModel"></typeparam>
 /// <typeparam name="TValue"></typeparam>
 /// <param name="html"></param>
 /// <param name="expression"></param>
 /// <param name="shell"></param>
 /// <returns></returns>
 public static MvcHtmlString LabelFor <TModel, TValue>(this HtmlHelper <TModel> html, Expression <Func <TModel, TValue> > expression, LabelInShell shell)
 {
     return(html.LabelFor(expression, null, shell));
 }