2011-12-03 33 views
0

僅當用戶名不在數據庫中時,我需要在我的視圖中顯示「添加爲用戶」鏈接。我在我的SQL數據訪問層中有一個名爲UsernameExists的方法,我想在AccountController中使用它。我會怎麼做呢?邏輯應該在服務器端,並在視圖上顯示鏈接。添加用戶鏈接ASP.NET MVC

+0

很可能需要添加一些細節到這個問題。你問是否有條件地顯示客戶端或服務器端? –

+0

我認爲邏輯應該在服務器端,但鏈接必須在視圖中顯示 – multiv123

+0

您是否使用ef? – Tassadaque

回答

1

您可以從您的控制器調用UsernameExists方法,並將結果添加到ViewBag中。在你的視圖中檢查ViewBag,如​​果bool是真的(用戶名已經存在),那麼不要顯示「Add as User」,否則顯示它。

例 -

控制器:

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,那麼你會做一些客戶端腳本來顯示/隱藏鏈接。 視圖模型:

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 
}