如何使用Javascript在MVC中向ModelState添加错误消息?

5

这是我的模型属性

 public ModelStateDictionary modelSateClientSide { get; set; }

现在我在JavaScript中调用了属性,并将错误添加到我的ModelState中。
if (parseInt(academicAchievement, 10) > parseInt(peAcademicAchievement, 10))
{
    @Model.modelSateClientSide.AddModelError(string.Empty, "xxx");
    return false;
}

我的做法正确吗?但我得到了上面那一行的错误:

System.Web.WebPages.WebPageExecutingBase.Write(System.Web.WebPages.HelperResult)方法的最佳重载匹配有一些无效参数。

如何解决这个问题?在MVC中,使用JavaScript还有其他选项可以将错误消息添加到ModelState吗?

1个回答

10

好的,我认为你不能使用JavaScript编写向ModelState字典写入数据的代码,因为JavaScript是客户端语言,而C# / Razor是在服务器端处理的。

在您发布的代码中,这一行

@Model.modelSateClientSide.AddModelError(string.Empty, "xxx");

由于它在服务器上处理,Razor不“知道”JavaScript或其条件语句,因此每次页面加载时都会实际评估它。

但是,如果您只想显示类似于ValidationSummary HtmlHelper默认生成的错误消息,您可以编写一个JavaScript函数来完成。大致如下:

function showClientError(message) {
   var $div = $('.validation-summary-errors');
   if ($div.length == 0) {
       $div = $('<div class="validation-summary-errors">');
       $div.html('<ul></ul>');
       // Put the $div somewhere
       $div.appendTo($('#myForm'));
   }
   $div.find('ul').append($('<li>').text(message));
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接