Asp.net mvc 将数据批注属性错误添加到对象错误列表
我有以下代码:Asp.net mvc 将数据批注属性错误添加到对象错误列表,asp.net-mvc,data-annotations,Asp.net Mvc,Data Annotations,我有以下代码: public class WebSiteCloneEditModel { public WebSiteCloneEditModel() { FromWebsiteId = 0; Code = ""; Name = ""; Domain = ""; } [Range(1, double.MaxValue, ErrorMessage = "Website
public class WebSiteCloneEditModel
{
public WebSiteCloneEditModel()
{
FromWebsiteId = 0;
Code = "";
Name = "";
Domain = "";
}
[Range(1, double.MaxValue, ErrorMessage = "Website is Required")]
[Display(Name = "Choose website to clone:")]
public int FromWebsiteId { get; set; }
[Display(Name = "Code")]
public string Code { get; set; }
[Display(Name = "Name")]
public string Name { get; set; }
[Display(Name = "Domain")]
public string Domain { get; set; }
public ErrorManagement ErrorLists
{
get { return UnitOfWork.Instance.GetLastError(); }
}
}
以及控制器中的以下方法:
public JsonResult ExecuteClone(WebSiteCloneEditModel cloneModel)
{
if (ModelState.IsValid)
{
//redirect to new website
var result = WebsiteExtension.CloneWebSiteFrom(cloneModel);
if (result > 0)
{
return Json(JsonResponse.Get(new { url = "/Admin/Websites/Edit/" + result }, message: "Success", responsecode: ResponseCode.Success, description: "Clone is created"));
}
else
{
return Json(JsonResponse.Get(new { url = "/Admin/Websites" }, message: "Error", responsecode: ResponseCode.Success, description: "Clone is faild"));
}
}
else
{
return Json(JsonResponse.Get(message: "Error", responsecode: ResponseCode.Error, response: cloneModel.ErrorLists));
}
}
对于ModelState无效的情况,我发送Json中的对象错误列表。
如何将该错误从模型中的Range属性添加到他的错误列表中?
我想这可以在模型内部完成
请,忠告 我最近也做了类似的事情,最后使用了扩展方法来获取错误。我在堆栈溢出上找到了它,但没有将该作品归属于原始的url
/// <summary>
/// Gets the ModelState errors as an IEnumerable of strings.
/// </summary>
/// <param name="modelState">The ModelState dictionary.</param>
/// <returns>
/// Returns the ModelState errors as an IEnumerable of strings.
/// </returns>
public static IEnumerable<string> GetModelStateErrors(this System.Web.Mvc.ModelStateDictionary modelState)
{
List<string> msgList = new List<string>();
foreach (var ms in modelState.Values)
{
foreach (var modelError in ms.Errors)
{
msgList.Add(modelError.ErrorMessage);
}
}
return msgList;
}
然后,您可以基于返回的字符串构建ErrorManagement对象。以下内容将创建所有具有错误的属性的列表
var errors=ModelState.Keys。其中(k=>ModelState[k].errors.Count>0)。选择(k=>new{propertyName=k,errorMessage=ModelState[k].errors[0].errorMessage})代码>
var modelErrors = ModelState.GetModelStateErrors();