2013-10-03 42 views
0

我正在使用ASP.Net MVC 4和ADO.net(而不是EF)的用户注册系统。MVC 4显示来自BAL/BLL层的错误消息

我有这个方法在我的BAL/BLL层:

public static void InsertMemberUsername(RegisterRequest register, Guid id_fk) 
    { 
     if (Exist(register.UserName.Username)) 
     { 
      // display error message to pick some other username 
     } 

     MEMBER_USERNAME entityToCreate = CreateMemberUsername(register, id_fk); 
     MEMBER_USERNAME_DAL.SQLAtlInsert(entityToCreate, "Server=ConnSting Here;"); 
    } 

以我控制器我有这样的:

[CaptchaMvc.Attributes.CaptchaVerify("Captcha is not valid")] 
    [HttpPost] 
    [AllowAnonymous] 
    [ValidateAntiForgeryToken] 
    public ActionResult Register(RegisterRequest model) 
    { 
     if (ModelState.IsValid) 
     { 
      Membership_BAL.Register(model); 
      // TODO: Redirect user to profile page 
      return RedirectToAction("Index", "Home"); 
     } 

     TempData["Message"] = "Error: captcha is not valid."; 
     return View(); 
    } 

的InsertMemberName方法被称为注册方法的内部。

如果用户名已被使用,最好显示错误消息是什么?

+1

更好的方法是使用MVC Remote验证用户名作为验证过程的一部分。 http://msdn.microsoft.com/en-us/library/gg508808(v=vs.98).aspx –

+0

@MystereMan谢谢 –

回答

2

显然有各种方法来实现这一点。

public static void InsertMemberUsername(RegisterRequest register, Guid id_fk) 
{ 
    if (Exist(register.UserName.Username)) 
    { 
     // display error message to pick some other username 
    } 

    MEMBER_USERNAME entityToCreate = CreateMemberUsername(register, id_fk); 
    MEMBER_USERNAME_DAL.SQLAtlInsert(entityToCreate, "Server=ConnSting Here;"); 
} 

修改你的函数

public static bool InsertMemberUsername(RegisterRequest register, Guid id_fk) 
{ 
    if (Exist(register.UserName.Username)) 
    { 
     return false; 
    } 

    MEMBER_USERNAME entityToCreate = CreateMemberUsername(register, id_fk); 
    MEMBER_USERNAME_DAL.SQLAtlInsert(entityToCreate, "Server=ConnSting Here;"); 

    return true; 
} 

我希望有代表的错误消息我的模型中的一个参数,而不是使用TempData的。像

public class SomeModel 
{ 
    public string ErrorMessage { get; set; } 
    // Your other model parameters go here. 
} 

东西然后就可以设置参数模型中的这样

var someModel = new SomeModel(); 

if(!InsertMemberUsername(// You parameters)) 
{ 
    someModel.ErrorMessage = "Error: captcha is not valid."; 
} 

而这一模式传递给您的看法是这样

return View(someModel); 

在你看来,你现在可以显示此参数的内容,例如

<div> 
    @if(!string.IsNullOrEmpty(@Model.ErrorMessage)) 
    { 
     @Model.ErrorMessage 
    } 
</div>