5

这是我的模型属性

 public ModelStateDictionary modelSateClientSide { get; set; }

现在我在 JavaScript 中调用了 Property 并在我的 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)' 的最佳重载方法匹配有一些无效参数。

如何解决这个问题?使用 Javascript 在 MVC 上的 ModelState 中添加错误消息的任何其他选项?

4

1 回答 1

9

好吧,我认为您不能使用 JavaScript 写入 ModelState 字典,因为它是一种客户端语言,而 C# / Razor 是在服务器端处理的。

在您发布的代码中,该行

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

实际上会在每次页面加载时进行评估,因为它是在服务器上处理的,并且 Razor 并不“了解” JavaScript 或其条件语句。

但是,如果您只想显示类似于ValidationSummaryHtmlHelper 默认生成的错误消息,您可以编写一个 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));
}
于 2013-07-20T01:06:38.160 回答