2013-06-04 54 views
2

在ASP.NET MVC我可以做這樣的事情(參數被設置爲顯示名稱):ASP.NET Web窗體 - 與參數的錯誤消息就像在ASP.NET MVC

[Required(ErrorMessage="Please insert a valid {0}") ] 
[DisplayName("User name")] 
public string UserName { get; set; } 

所以錯誤消息「請插入有效的{0}「被翻譯爲」請插入有效的用戶名「。我可以在ASP.NET Web Forms的ErrorMessage中使用下面的代碼嗎?

<asp:TextBox ID="Email" Text="E-mail" runat="server" Width="300px" /> 

<asp:RequiredFieldValidator ID="RequiredEmailValidator" runat="server" ErrorMessage="Field {0} is required." ControlToValidate="Email" Display="Dynamic"></asp:RequiredFieldValidator> 

所以錯誤消息 「Field {0} is required」 應翻譯爲 「Field E-mail is required」。

回答

3

RequiredFieldValidator是驗證單個字段(ControlToValidate屬性)的ASP.NET驗證控件。這意味着您爲其中一個驗證器定義的消息應該只是被驗證字段的特定消息。 在這種情況下:

<asp:TextBox ID="Email" Text="E-mail" runat="server" Width="300px" /> 
<asp:RequiredFieldValidator ID="RequiredEmailValidator" runat="server" ErrorMessage="Field E-mail is required." ControlToValidate="Email" Display="Dynamic"></asp:RequiredFieldValidator> 

<asp:TextBox ID="UserName" Text="User Name" runat="server" Width="300px" /> 
<asp:RequiredFieldValidator ID="RequiredEmailValidatorUN" runat="server" ErrorMessage="Field User Name is required." ControlToValidate="UserName" Display="Dynamic"></asp:RequiredFieldValidator> 

按照這一邏輯,則必須爲每個需要驗證字段中的一個RequiredFieldValidator實例,並且該消息將用於每個驗證分別進行定義。

也可以通過javascript設置此消息,因爲每個RequiredFieldValidator都在頁面上呈現,因此可以進行操作。在代碼隱藏中,通過C#更改它也是有效的。

+0

^這是一個很好且快速的方法來做到這一點。如果你不這樣做,你將不得不使用一些C#代碼來檢查字段是否爲空,然後在asp:label或HTML元素中輸出錯誤信息。 – ClosDesign

+0

因此,如果我將TextBox文本從「用戶名」更改爲「登錄」,我將不得不更改ErrorMessage「需要字段用戶名」。到「字段登錄是必需的」。 - 在ASP.NET MVC中它更舒服:) – michael

+0

@michael是的,你也必須改變消息。你實際上可以動態地做到這一點,但它會需要更多的C#代碼,因爲它不是內置的功能。 –