0
Materialize.cssでdata-error属性を使用して、ASP.NET Coreを使用するフォームのすべてのエラーメッセージを処理しようとしています。私はサーバー側の検証のための属性を使用してモデルクラスを持っています。重複したコードを避けるために、モデル内の検証設定でいくつかのHTML属性を設定したいと思います。<span>をHtml.ValidationMessageForから削除します。
例えば、私は以下のような何かをしたいと思います:
[email protected](m => m.FirstName)
しかし、ASP.NETの原因の問題によって生成されたタグ<span>
。マークアップなしで生のテキストを取得する方法はありますか?
public static class DeleteSpan //Name of class could be any you want
{
public static HtmlString ValidationTextNoTags<TModel, TProperty>(this IHtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression)
{
var result = "";
Regex regex = new Regex("<span.*?>(.*?)<\\/span>");//regular expression to extract text between span tags
using (var writer = new StringWriter())
{
htmlHelper.ValidationMessageFor(expression).WriteTo(writer, HtmlEncoder.Default);
result = writer.ToString();
}
//get the actual content between tags
result = regex.Match(result).Groups[1].ToString();
return new HtmlString(result);
}
}
をし、そのような表示に使用します:
正規表現:私達はちょうど
Substring
代わりに正規表現の使用することができますタグ?本当に? – Julian@ジュリアンこのキャストでは受け入れられると思います。 HTML文書全体を解析するのは狂気だと思いますが、ここではほぼ同じクラスのタグが1つだけです。それとも私が逃した何かがありますか? – user2771704