2011-12-03 39 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 
}