4 javascript asp.net-mvc runtime-error modelstate
这是我的Model属性
public ModelStateDictionary modelSateClientSide { get; set; }
Run Code Online (Sandbox Code Playgroud)
现在我在JavaScript中调用了Property,并在我的ModelState中添加了错误
if (parseInt(academicAchievement, 10) > parseInt(peAcademicAchievement, 10))
{
@Model.modelSateClientSide.AddModelError(string.Empty, "xxx");
return false;
}
Run Code Online (Sandbox Code Playgroud)
我做得对吗?我在上面的行中出错了:
System.Web.WebPages.WebPageExecutingBase.Write(System.Web.WebPages.HelperResult)'的最佳重载方法匹配具有一些无效参数.
怎么解决这个?使用Javascript在MVC上的ModelState中添加错误消息的任何其他选项?
好吧,我认为您不能使用JavaScript写入ModelState字典,因为它是客户端语言,而C#/ Razor是在服务器端处理的.
在您发布的代码中,该行
@Model.modelSateClientSide.AddModelError(string.Empty, "xxx");
Run Code Online (Sandbox Code Playgroud)
每次页面加载时都会实际评估,因为它是在服务器上处理的,而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));
}
Run Code Online (Sandbox Code Playgroud)