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();