Asp.net-Mvc-3

驗證摘要消息中的連結

  • February 25, 2018

是否可以在驗證摘要消息中放置 HTML 連結?例如,如果出現驗證錯誤,我想放置一個指向另一個頁面的連結:

@Html.ValidationSummary(False, "read <a href=""anotherpage.html"">more</a>")

或者

@Html.ValidationSummary(False, "read " &
   Html.ActionLink("more", "helpforerror").ToHtmlString)

但在瀏覽器中,標籤被轉義,因此它不會形成連結。

最後我選擇了另一種方法:在驗證摘要之外創建一個包含連結等的 div,並且僅在 modelstate 無效時添加 div:

@If Not ViewData.ModelState.IsValid Then
   @<div>read <a href="anotherpage.html">more</a></div>
End If

這是受類似問題的回答啟發的。

我知道您已經接受了答案,但我認為我的解決方案更簡單,如果您想添加指向現有驗證摘要的連結,則需要更少的重寫。

您需要在驗證消息中添加一個{0}類型格式項,如下所示,它將被您的連結替換。

ModelState.AddModelError("", "Some error message with a link here {0}.");

然後在您的視圖中呼叫您的驗證摘要,如下所示:

@string.Format(Html.ValidationSummary().ToString(), Html.ActionLink("Click Here", "Action_To_Link_To")).ToHtmlString()

在這種情況下,我使用了添加到字元串對象的擴展方法,該方法.ToHtmlString()基本上只是將字元串轉換為 HtmlString,以防止任何標記被轉義。它看起來像這樣:

public static HtmlString ToHtmlString(this String str)
{
   return new HtmlString(str);
}

引用自:https://stackoverflow.com/questions/10907908