2017-08-03 12 views
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); 
    } 
} 

をし、そのような表示に使用します:

答えて

0

あなたは以下のようにspanタグの間のテキストを抽出するために拡張メソッドを持つクラスを使用することができます

 @Html.ValidationTextNoTags(m => m.FirstName) 

または

 <div class="col-md-4" data-error="@Html.ValidationTextNoTags(m =>m.FirstName)"> 
      <input type="text" name="FirstName" class="form-control" /> 
     </div> 

更新:私たちは常に1つのHTMLのため

public static class DeleteSpan 
{ 
    public static HtmlString ValidationTextNoTags<TModel, TProperty>(this IHtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression) 
    { 
     var result = ""; 

     using (var writer = new StringWriter()) 
     { 
      htmlHelper.ValidationMessageFor(expression).WriteTo(writer, HtmlEncoder.Default); 
      result = writer.ToString(); 
     } 
     //get the actual content between tags 
     result = result.Substring(result.IndexOf(">") + 1, result.IndexOf("</span>") - result.IndexOf(">") - 1); 

     return new HtmlString(result); 

    } 
} 
+0

正規表現:私達はちょうどSubstring代わりに正規表現の使用することができますタグ?本当に? – Julian

+0

@ジュリアンこのキャストでは受け入れられると思います。 HTML文書全体を解析するのは狂気だと思いますが、ここではほぼ同じクラスのタグが1つだけです。それとも私が逃した何かがありますか? – user2771704

関連する問題