Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net “如何改变”;“IHtmlString”;至;MvcHtmlString";?_Asp.net_Asp.net Mvc 3 - Fatal编程技术网

Asp.net “如何改变”;“IHtmlString”;至;MvcHtmlString";?

Asp.net “如何改变”;“IHtmlString”;至;MvcHtmlString";?,asp.net,asp.net-mvc-3,Asp.net,Asp.net Mvc 3,目前,我正在编写2个helper方法来扩展一个使用“IHtmlString”的实现,如何使用“MvcHtmlString”将其转换为一个方法?救命啊 publicstaticIHTMLString异常验证摘要(此HtmlHelper帮助程序) { const string template=“”+ "" + “验证异常:”+ “{0}”; StringBuilder例外列表=新建StringBuilder(); //遍历异常 foreach(helper.ViewData.ModelState.

目前,我正在编写2个helper方法来扩展一个使用“IHtmlString”的实现,如何使用“MvcHtmlString”将其转换为一个方法?救命啊

publicstaticIHTMLString异常验证摘要(此HtmlHelper帮助程序)
{
const string template=“”+
"" +
“验证异常:”+
“
    {0}
”; StringBuilder例外列表=新建StringBuilder(); //遍历异常 foreach(helper.ViewData.ModelState.SelectMany中的var错误(ModelState=>ModelState.Value.Errors)) { exceptionList.Append(string.Format(“
  • {0}
  • ”,error.ErrorMessage)); } 返回exceptionList.Length.Equals(0)?string.Format(“”.Raw():string.Format(模板,exceptionList.Raw()); } 公共静态IHtmlString Raw(此字符串值) { 返回新的HtmlString(值); }
    虽然我希望
    string.Format()
    隐式调用
    StringBuilder.ToString()
    方法,但如果没有,请显式调用
    ToString()
    方法,如下所示:

    string.Format(模板,exceptionList.ToString())
    
    此外,您的方法被声明为返回
    IHtmlString
    。如果将签名更改为使用
    MvcHtmlString
    ,这将告诉编译器所需的返回类型。此时,只需确保返回值与更新的声明匹配:

    返回MvcHtmlString.Create(string.Format(模板,exceptionList.ToString());
    
    虽然我希望
    string.Format()
    隐式调用
    StringBuilder.ToString()
    方法,但如果没有,请显式调用
    ToString()
    方法,如下所示:

    string.Format(模板,exceptionList.ToString())
    
    此外,您的方法被声明为返回
    IHtmlString
    。如果将签名更改为使用
    MvcHtmlString
    ,这将告诉编译器所需的返回类型。此时,只需确保返回值与更新的声明匹配:

    返回MvcHtmlString.Create(string.Format(模板,exceptionList.ToString());
    
    我不理解这个问题-是否要返回具体的MvcHtmlString实例而不是抽象的IHtmlString接口?为什么不直接返回一个MvcHtmlString实例呢?在我上面的例子中,如何结合“模板”和“例外列表”来返回一个MvcHtmlString?我不理解这个问题-你想返回一个具体的MvcHtmlString实例而不是抽象的IHtmlString接口吗?为什么不直接返回一个MvcHtmlString实例呢?在我上面的例子中,如何结合“模板”和“例外列表”来返回一个MvcHtmlString?
    public static IHtmlString ExceptionValidationSummary(this HtmlHelper helper)
        {
            const string template = "<div class=\"ui-widget\"><div class=\"ui-state-error ui-corner-all\" style=\"padding:0 .7em\"><div>" +
                                    "<span class=\"ui-icon ui-icon-alert\" style=\"float: left; margin-right: .3em;\"></span>" +
                                    "<strong>Validation Exceptions:</strong></div><div style=\"margin-top: 5px;\"> " + 
                                    "<ul style=\"font-weight: normal;\">{0}</ul></div></div></div>";
    
            StringBuilder exceptionList = new StringBuilder();
    
            // Iterate through the exceptions
            foreach (var error in helper.ViewData.ModelState.SelectMany(modelState => modelState.Value.Errors))
            {
                exceptionList.Append(string.Format("<li>{0}</li>", error.ErrorMessage));
            }
    
            return exceptionList.Length.Equals(0) ? string.Format("").Raw() : string.Format(template, exceptionList).Raw();
    
        }
    
        public static IHtmlString Raw(this string value)
        {
            return new HtmlString(value);
        }