Asp.net “如何改变”;“IHtmlString”;至;MvcHtmlString";?
目前,我正在编写2个helper方法来扩展一个使用“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.
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);
}