在我的自定义ValidationSummary扩展中定制HTML

本文关键字:HTML 扩展 我的 自定义 ValidationSummary | 更新日期: 2023-09-27 18:04:15

到目前为止,它是工作的,但我似乎不能确定在正确的顺序需要的HTML。

对于每个不同的错误,我需要返回以下HTML:

<div class="style-msg errormsg">
    <div class="sb-msg">
        <i class="icon-remove"></i>
        Error Text
    </div>
</div>

下面是扩展方法:

public static string MyValidationSummary(this HtmlHelper helper, string validationMessage = "")
        {
            string retVal = "";
            if (helper.ViewData.ModelState.IsValid)
                return "";
            retVal += "<div class='style-msg errormsg'><div class='sb-msg'><i class='icon-remove'></i>";
            if (!String.IsNullOrEmpty(validationMessage))
                retVal += helper.Encode(validationMessage);
            foreach (var key in helper.ViewData.ModelState.Keys)
            {
                foreach (var err in helper.ViewData.ModelState[key].Errors)
                    retVal += helper.Encode(err.ErrorMessage);
            }
            retVal += "</div></div>";
            return retVal.ToString();
        }
    }

最后是我如何在实际的网页上调用它

@Html.Raw(Html.MyValidationSummary())

奖金问:在这种情况下使用HTML.Raw安全吗?

在我的自定义ValidationSummary扩展中定制HTML

在摆弄了一下之后,我得出了这个结论。我稍微改变了一下HTML,因为我想使用Bootstrap警告框。

public static string MyValidationSummary(this HtmlHelper helper, string validationMessage = "")
{
    string retVal = "";
    string errorList = "";
    foreach (var key in helper.ViewData.ModelState.Keys)
    {
        retVal = "";
        foreach (var err in helper.ViewData.ModelState[key].Errors)
        {
            retVal += "<div class='alert alert-danger'>";
            retVal += "<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>×</button>";
            retVal += "<i class='icon-remove-sign'></i>";
            retVal += helper.Encode(err.ErrorMessage);
            retVal += "</div>";
            errorList += retVal;
        }

    }
    return errorList.ToString();
}