2013-10-03 67 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>