2012-05-05 10 views
2

私はRegisterloginの両方のページに控えめなajaxを使用しています。私のモデルで
UsernameプロパティはRegistration Pageに細かい作業Remote("ActionName","ControllerName")
その飾らが、問題は、検証もLogin Pageで働いているです。それでは、どのようにdynamiclyリモートバリデータをオフにすることはできませんので、私はunobtrusive javascript file「リモート」属性の回避策

答えて

1

を削除カント私はLogin PageRemote検証属性を無効にすることができますが、私はLogin PagesignInのAjax機能をしたいです。

解決策は、2つのビューで同じモデルを使用しないことです。あなたには、いくつかのオブジェクトのオブジェクトマッパーを使用することができますマッピングプロパティについては

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

    //... 
} 

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

    //... 
} 

をあなたのviewmodelからあなたのモデルにコントローラーで:

の代わりにログインするための2つのviewmodelsを作成し、上のレジスタビュー用と異なり、それらに注釈を付けますlike AutoMapper

+0

あなたの迅速な対応に感謝します。私は同じことを推測しましたが、ViewModelの数を増やし続けるこの方法です。それはベストプラクティスですか?ところで、私は答えとして受け入れています。それは、 'Remote'バリデータを動的に無効にするのがうれしいです。 – Vivek

+0

多くのViewModelを作成する心配はありません。それは、それぞれのビューに固有のニーズに合わせた独自のカスタマイズされたViewModelがあるという懸念を分離するのに役立ちます。あるページのあなたの例のように、別のページで検証する必要があります。あなたはviewmodelsについて読むことができます。例えば、[ここ](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'要素(バリデータを制御することに使用される)から 'data-'属性を動的に削除できますそのアプローチをとることを提案していない。 – nemesv