2011-12-03 10 views
0

ユーザー名がデータベースにない場合にのみ、私のビューに「ユーザーとして追加」リンクを表示する必要があります。 AccountControllerで使用したいSQLデータアクセスレイヤーにUsernameExistsというメソッドがあります。それをどうやってやりますか?ロジックはサーバー側にあり、リンクはビューに表示されている必要があります。ユーザーリンクを追加するASP.NET MVC

+0

あなたはおそらくこの質問にいくつかの詳細を追加する必要があります。条件付きでクライアント側、つまりサーバー側を表示するように求めていますか? –

+0

私はロジックがサーバー側にあるべきだと思うが、リンクはビューに表示されなければならない – multiv123

+0

efを使用していますか? – Tassadaque

答えて

1

コントローラからUsernameExistsメソッドを呼び出し、その結果をViewBagに追加することができます。あなたのビューでViewBagをチェックし、ブールが真(ユーザ名がすでに存在する)ならば、 "ユーザとして追加"を表示せず、それ以外のものを表示してください。

例 -

コントローラー:

ViewBag.usernameExists = model.UsernameExists(username); 

ビュー:

@if(!(bool)ViewBag.usernameExists) 
{ 
    <a>Add as User</a> 
    //Whatever you want to display 
} 
+0

ありがとう、しかし、別のライブラリ(SQLContactLibrary)の別のクラス(SQLContactDAL)にある場合、コントローラからUsernameExistsメソッドにアクセスするにはどうすればよいですか? – multiv123

+0

@ multiv123プロジェクト内のSQLContactLibraryへの参照を追加します。次に、静的メソッドの場合:SQLContactLibrary.SQLContactDAL.UsernameExists(username); //これはクラスの名前空間によって若干異なる場合があります。 – xbrady

+0

参照には既にSqlContactLibraryへの参照があります。私は、ViewBagステートメントをアクションメソッドpublic ActionResult CreateUserに入れます。 – multiv123

0

は、リモート検証を使用してのように私には聞こえあなたがしたいと思うものです、あなたは隠されたリンクを表示しますページ上にこれをMVCで無料で手に入れたら、リンクを表示/非表示にするためのクライアントサイドスクリプトを実行します。 のViewModel:

public CreateUserVM 
{ 
    [Required] 
    [Remote("UsernameExists","YourController")] 
    string Username { get; set; } 
} 

ビュー:

@model CreateUserVM 
@Html.LabelFor(model => model.Username, "Enter User Name:") 
@Html.EditorFor(model => model.Username) 

コントローラ

public JsonResult UsernameExists(CreateUserVM user) 
{ 
    //logic to check if user name exists 
} 
関連する問題