2011-01-28 14 views
3

は、私はクラスの管理を持っています文字列ユーザー名は常にnullです。アクションに送信される内容は次のとおりです。MVC3リモート属性検証

問題は、UsernameAvailableがhttpクエリでAdmin.Username値とUsername値を送信しないことです。ビューモデルを使ってどうすればいいですか?

おかげ

答えて

5

デフォルトのモデルバインダーに接頭辞を指定できます。今usernameパラメータが正しく、以下を想定してバインドされます

public ActionResult UsernameAvailable(Admin admin) 
{ 
    return Json(
     this.AdminRepository.GetLoginByUsername(admin.Username), 
     JsonRequestBehavior.AllowGet 
    ); 
} 

public ActionResult UsernameAvailable([Bind(Prefix = "Admin")]string username) 
{ 
    return Json(
     this.AdminRepository.GetLoginByUsername(username), 
     JsonRequestBehavior.AllowGet 
    ); 
} 

たりAdminモデルを使用しますリクエスト:

http://localhost/admin/admins/usernameavailable?Admin.Username=ferwf 
+0

私は2番目のアプローチをお勧めします。基本的には別のアクションメソッドのように思えます。その場合、デフォルトのモデルバインダーはユーザー名文字列ではなくAdminにバインドされます。 –

+0

が働いた。しかし、私は "AdminViewModel"にバインドしなければならず、 "Admin"ではそうではありませんでした:public ActionResult UsernameAvailable(AdminsEditViewModel row) – ShaneKm

関連する問題