代码之家  ›  专栏  ›  技术社区  ›  hncl

运算符“+”不能应用于MvcHtmlString类型的操作数

  •  6
  • hncl  · 技术社区  · 14 年前

    我正在转换一个ASP.NETMVC应用程序ASP.NETMVC 2 4.0,并获取以下错误:

    HTML = Html.InputExtensions.TextBox(helper, name, value, htmlAttributes) 
           + Html.ValidationExtensions.ValidationMessage(helper, name, "*");
    

    如何补救?

    6 回复  |  直到 10 年前
        1
  •  5
  •   Community CDub    7 年前

    MvcHtmlString .ToString() )或者换一种方式。

    您也可以编写一个扩展方法,请参见以下示例: How to concatenate several MvcHtmlString instances

        2
  •  4
  •   Anders    13 年前

    就我个人而言,我使用了一个非常精简的实用程序方法,它利用了string类中现有的Concat()方法:

    public static MvcHtmlString Concat(params object[] args)
    {
        return new MvcHtmlString(string.Concat(args));
    }
    
        3
  •  1
  •   mike nelson    11 年前

    @Anders方法作为一种推广方法。这样做的好处是,当系统自动对每个对象调用ToString时,您可以将几个MvcHtmlStrings与其他值(如normal strings、int等)附加在一起。

        /// <summary>
        /// Concatenates MvcHtmlStrings together
        /// </summary>
        public static MvcHtmlString Append(this MvcHtmlString first, params object[] args) {
            return new MvcHtmlString(string.Concat(args));
        }
    

    MvcHtmlString result = new MvcHtmlString("");
    MvcHtmlString div = new MvcHtmlString("<div>");
    MvcHtmlString closediv = new MvcHtmlString("</div>");
    
    result = result.Append(div, "bob the fish", closediv);
    result = result.Append(div, "bob the fish", closediv);
    

    会的 如果我们能让接线员过载就更好了+

        4
  •  0
  •   Stefan Steiger Marco van de Voort    11 年前

    这是我的方法:

            // MvcTools.ExtensionMethods.MvcHtmlStringExtensions.Concat
            public static MvcHtmlString Concat(params MvcHtmlString[] strings)
            {
                System.Text.StringBuilder sb = new System.Text.StringBuilder();
    
                foreach (MvcHtmlString thisMvcHtmlString in strings)
                {
                    if (thisMvcHtmlString != null)
                        sb.Append(thisMvcHtmlString.ToString());
                } // Next thisMvcHtmlString
    
                MvcHtmlString res = MvcHtmlString.Create(sb.ToString());
                sb.Clear();
                sb = null;
    
                return res;
            } // End Function Concat
    
        5
  •  0
  •   N-ate    11 年前
            public static MvcHtmlString Concat(params MvcHtmlString[] value)
            {
                StringBuilder sb = new StringBuilder();
                foreach (MvcHtmlString v in value) if (v != null) sb.Append(v.ToString());
                return MvcHtmlString.Create(sb.ToString());
            }
    
        6
  •  0
  •   Colin    8 年前

    以@mike nelson为例,这是最适合我的解决方案:

    @foreach (var item in Model)
    {
        MvcHtmlString num = new MvcHtmlString(item.Number + "-" + item.SubNumber);
        <p>@num</p>
    }