有幾個教程解釋瞭如何使用EF數據註釋來使用MVC框架進行表單驗證。併爲客戶端使用jQuery。實體框架 - 驗證(服務器+ clientside,jquery)與數據註釋,WITHOUT MVC?
參見例如:http://dotnetaddict.dotnetdevelopersjournal.com/clientvalidation_mvc2.htm
我想達到相同的,但不使用MVC/MVC2。我想建立一個經典的asp.net網站,創建實體模型,創建包括驗證(必需,正則表達式等)我的部分類。
我創建了實體模型和包含數據註釋的部分類。我可以將新記錄添加到數據庫。
我想念的是驗證。現在我可以添加記錄到數據庫,即使這些字段無效,我想獲得錯誤,並且如果可能的話我想使用jquery進行客戶端驗證(在MVC中,您只需將<% Html.EnableClientValidation(); %>
添加到視圖中... )。
你能幫我嗎?或者指出一些很好的在線資源來解釋這一點?
非常感謝。
編輯:我發現這裏的東西:
How can I tell the Data Annotations validator to also validate complex child properties?
我有一個實體,稱爲 「用戶」 和我創建了一個局部類,如下所示:
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
namespace MySite.Models
{
[MetadataType(typeof(UserMetaData))]
public partial class User
{
}
public class UserMetaData
{
[Required(ErrorMessage = "Username Required")]
[DisplayName("Username")]
public string Username{ get; set; }
[DisplayName("Password")]
[Required(ErrorMessage = "Password Required")]
[RegularExpression(@"^[^;>;&;<;%?*!~'`;:,."";+=|]{6,10}$", ErrorMessage = "The password must be between 6-10 characters and contain 2 digits")]
public string Password{ get; set; }
}
}
在後面的代碼我已經在上面提到的鏈接中加入了類似的「isValid」檢查:
var validationContext = new ValidationContext(person, null, null);
var validationResults = new List<ValidationResult>();
var isValid = Validator.TryValidateObject(userToAdd, validationContext, validationResults);
if (isValid)
{
savetoDB();
}
但是,當我調試...「isValid」總是「真」,即使我離開字段爲空。說明:-S
EDIT2:
這一直是 「真」,因爲我被灌了 「用戶」 屬性,如下所示:
User userToAdd = new User();
userToAdd.Username = txtUsername.Text;
userToAdd.Password = txtPassword.Text;
我改變了對象:從 「用戶」 「UserMetaData」(User userToAdd = new UserMetaData();
),然後驗證工作(假如不尊重正則表達式,則爲「假」)......但仍然很奇怪......然後我應該創建另一個「用戶」對象並重新填充它...不是很乾淨...