0

我正在使用 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();
    }

InsertMemberName 方法在 Register 方法内部调用。

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

4

1 回答 1

1

显然有多种方法可以实现这一目标。

修改您的功能

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>
于 2013-10-03T15:06:35.220 回答