2012-05-05 94 views
2

我有一個Registerlogin頁面都使用不顯眼的ajax。
在我的模型中Username物業裝飾有Remote("ActionName","ControllerName")
它在Registration Page工作正常,但問題是驗證在Login Page也工作。所以,我怎麼可以禁用對Login PageRemote驗證屬性,但我確實希望的signInLogin Page AJAX功能,所以我不能刪除unobtrusive javascript file解決方法爲「遠程」屬性

回答

1

您無法關閉遠程驗證動態地。

解決方法是不要在兩個視圖中使用相同的模型。

而不是創建兩個的ViewModels一個用於登錄和對寄存器觀點和不同的詮釋他們:從您的視圖模型

public class RegisterUserViewModel 
{ 
    [Remote("ActionName","ControllerName")] 
    public string Username { get; set; } 

    //... 
} 

public class LoginUserViewModel 
{ 
    public string Username { get; set; } 

    //... 
} 

對於映射屬性到模型控制器,你可以使用一些對象,對象映射像AutoMapper

+0

感謝您的快速響應。我猜也一樣,但是這樣它不斷增加ViewModel的數量。這是最佳做法嗎?順便說一句,我已經接受作爲答案,但它很好動態關閉遠程驗證程序 – Vivek

+0

不要擔心創建大量的ViewModels,這是使用它們的最佳實踐。它有助於分離每個視圖都有自己定製的ViewModel以滿足其特定需求的問題。就像你在一個頁面上的例子一樣,你需要在另外一個頁面上進行驗證。你可以開始閱讀關於viewmodels eg [here](http://stackoverflow.com/questions/6157348/when-do-i-use-view-models-partials-templates-and-handle-child-bindings-with-mv )和[這裏](http://www.rachelappel.com/use-viewmodels-to-manage-data-amp-organize-code-in-asp.net-mvc-applications)。 – nemesv

+0

關於'Remote':可能(我沒有嘗試過)使用JavaScript,你可以動態地從你的'input'元素(用來控制驗證器)中移除MVC生成的'data-'屬性,但是我真的不用不建議採取這種方法。 – nemesv