閱讀許多博客和帖子此網站後,我想試圖覆蓋RequiresUniqueEmail在SimpleMembershipProvider好像很多隻是一個繁瑣的事情一碼。RequiresUniqueEmail在SimpleMembershipProvider
所以我在尋找什麼,我也做了一些建議。我在數據庫中的電子郵件列添加了唯一索引,然後我有一個try catch塊捕獲任何sql異常。
我該用戶發佈,如果我找到它的電子郵件地址異常消息裏面的樣子,然後我返回消息說:「電子郵件已在使用」,否則另一條消息。
此工程在我的機器上,我收到錯誤消息是:
Message=Cannot insert duplicate key row in object 'dbo.UserProfile'
with unique index 'idx_UniqueEmail'. The duplicate key value is
([email protected]).
由於我不是一個有經驗的程序員,我們將不勝感激的任何反饋。
我的代碼如下。
catch (SqlException e)
{
var errorMessage = e.Message.ToLower();
ModelState.AddModelError("", errorMessage.Contains(model.Email) ? "Sorry the email address is already in use." : "Sorry an error has occured");
}
您可以在您的實體中實現IValidatableObject,並在電子郵件中存在與數據庫中已輸入的電子郵件匹配的郵件時傳回自定義錯誤。 (假設EF正在使用) –
布拉德您好,感謝的答覆,我沒有使用EF這一點,但會考慮IValidatableObject –
可以使用遠程驗證:http://msdn.microsoft.com/en-us/ library/gg508808(v = vs.98).aspx – ataravati