2011-04-12 71 views
0

我有一類用戶,即有一個電子郵件屬性,像:排除從unobstrusive客戶端驗證屬性與MVC 3

public class User : Entity 
{  
... 
    [Display(Name = "Email"), Required(ErrorMessage = "Required."), Remote("EmailExists", "User", ErrorMessage = "Email already in Use.")] 
    public virtual string Email { get; set; } 
... 
} 

我的視圖中創建精品工程的所有驗證... 但在我的觀點編輯,我的電子郵件texbox是只讀,因此用戶不能更改電子郵件......

問題是我的遠程驗證EmailExists保持射擊......

有沒有一種方法可以在這種情況下排除電子郵件客戶端驗證?或者也許另一種解決方案

感謝

回答

1

最好的解決辦法是使電子郵件作爲在特定情況下,文本內容(跨度,P等) - 驗證就不會開火。這最好用編輯器模板來完成。但是,如果你不希望,你可以使用一些JavaScript來刪除客戶端的規則。看看Plugins/Validation/rules - 當文本框是隻讀的,你會刪除規則。但對我來說,第一種方式是最好的選擇

1

我認爲,更簡單的方法是在客戶端禁用該領域而不是使用只讀的。驗證插件不考慮禁用的字段。

+0

問題是殘疾人領域發NULL值到我的控制器更新方法... – Paul 2011-04-12 14:39:36

+0

表單域很容易被篡改,因此,如果字段必須是隻讀的,你只需要採取帳戶控制器,更新電子郵件只有這是一個新用戶。 – Jokin 2011-04-13 13:05:28

0

你可以使用不同的ViewModels的編輯和創建視圖和只適用於遠程屬性來查看與創建視圖關聯的模型或調用一些其他遠程驗證邏輯與編輯視圖相關聯的視圖模型。