滾你自己ValidationMessage助手來解析圖像標記可能是你最好的選擇...內置的助手將呈現一個標籤,如
<span class="field-validation-error">You must specify a username.</span>
,所以如果你不打算改變這一你留給CSS和/或jQuery技巧來做這個骯髒的工作。
我不知道一個純用的,如果CSS做你的工作,但如果你能處理一個DIV標籤中有你的錯誤消息跨度,你可以嘗試這樣的:
.field-validation-error
{
background: url(x.gif) no-repeat;
padding-left:10px;
color: #ff0000;
}
<div style="width:10px; height:10px; overflow:hidden;">
<%= Html.ValidationMessage("username") %>
</div>
對於10x10 gif,這將隱藏文本,但它將位於塊元素中,並且沒有錯誤消息標題/「tooltip」。不完全是最好的解決方案。我會檢查MVC源代碼中的ValidationMessage方法的代碼,並考慮根據需要調整自己的代碼以完全呈現它,或者再次使用JavaScript來做這個詭計。
編輯:爲了好玩,我決定從MVC源代碼開始測試我自己的驗證消息幫助器。它很髒(硬編碼的圖像路徑),但是一個有效的例子。在這種情況下,它需要你傳遞驗證消息 - 我省略了一些代碼,它可以選擇顯示默認的內置消息。
public static string MyValidationMessage(this HtmlHelper htmlHelper, string modelName, string validationMessage)
{
if (modelName == null)
throw new ArgumentNullException("modelName");
if (!htmlHelper.ViewData.ModelState.ContainsKey(modelName))
return null;
ModelState modelState = htmlHelper.ViewData.ModelState[modelName];
ModelErrorCollection modelErrors = (modelState == null) ? null : modelState.Errors;
ModelError modelError = ((modelErrors == null) || (modelErrors.Count == 0)) ? null : modelErrors[0];
if (modelError == null)
return null;
return "<img src=\"../../Content/x.gif\" alt=\"Error\" title=\"" + validationMessage + "\" />";
}
這應該是一個靜態方法。 – 2009-08-12 12:58:25
你是對的,編輯。謝謝。 – Jimmeh 2009-08-12 13:07:04