MVC 4 显示来自 BAL/BLL 层的错误消息

本文关键字:BLL 错误 消息 BAL 显示 MVC | 更新日期: 2023-09-27 18:33:41

我正在使用 ASP.Net MVC 4和 ADO.net(不是EF)的用户注册系统。

我的 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();
    }

方法在 Register 方法内部调用。

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

MVC 4 显示来自 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;");
}

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>