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 方法内部调用。
如果用户名已被使用,显示错误消息的最佳方法是什么?
显然有多种方法可以实现这一点。
从以下位置修改函数
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>