是否有任何标准做法可在视图中显示错误?目前它正在从TempData中显示。
我从Base Controller实现了派生类,并在我的每个控制器中使用了派生类。然后从控制器分配错误或成功消息。
public class TestController : Controller
{
public string ErrorMessage
{
get { return (string) TempData[CommonHelper.ErrorMessageKey]; }
set
{
if (TempData.ContainsKey(CommonHelper.ErrorMessageKey))
{
TempData[CommonHelper.ErrorMessageKey] = value;
}
else
{
TempData.Add(CommonHelper.ErrorMessageKey,value);
}
TempData.Remove(CommonHelper.SuccessMessageKey);
}
}
public string SuccessMessage
{
get { return (string)TempData[CommonHelper.SuccessMessageKey]; }
set
{
if(TempData.ContainsKey(CommonHelper.SuccessMessageKey))
{
TempData[CommonHelper.SuccessMessageKey] = value;
}
else
{
TempData.Add(CommonHelper.SuccessMessageKey, value);
}
TempData.Remove(CommonHelper.ErrorMessageKey);
}
}
}
CommonHelper Class
public class CommonHelper
{
public const string SuccessMessageKey = "successMessage";
public const string ErrorMessageKey = "errorMessage";
public static string GetSuccessMessage(object data)
{
return data == null ? string.Empty : (string) data;
}
public static string GetErrorMessage(object data)
{
return data == null ? string.Empty : (string) data;
}
}
然后创建了具有此
的部分视图@using Web.Helpers
@if (!string.IsNullOrEmpty(CommonHelper.GetSuccessMessage(TempData[CommonHelper.SuccessMessageKey])))
{
<div class="alert alert-success">
@CommonHelper.GetSuccessMessage(TempData[CommonHelper.SuccessMessageKey])
</div>
}
else if (!string.IsNullOrEmpty(CommonHelper.GetErrorMessage(TempData[CommonHelper.ErrorMessageKey])))
{
<div class="alert alert-success">
@CommonHelper.GetErrorMessage(TempData[CommonHelper.ErrorMessageKey])
</div>
}
在每个视图中,都会呈现局部视图。
<div>
@Html.Partial("_Message")
</div>
答案 0 :(得分:1)
我更喜欢使用ModelState.AddModelError()
答案 1 :(得分:1)
这是一个非常常见的显示错误的实现。
控制器
public class UserController : Controller
{
[HttpPost]
public ActionResult Create(User model)
{
// Example of manual validation
if(model.Username == "Admin")
{
ModelState.AddModelError("AdminError", "Sorry, username can't be admin")
}
if(!ModelState.IsValid()
{
return View(model)
}
}
}
模型
public class User
{
[Required]
public string Username {get; set;}
public string Name {get; set; }
}
查看
@Html.ValidationSummary(true)
@using(Html.BeginForm())
{
// Form Html here
}
您不需要您创建的所有基础架构。这由框架处理。如果您需要一种方法来添加成功消息,可以查看Nuget Package MVC FLASH