【问题标题】:ASP.Net MVC Razor engine: Make a javascript function aware if the user has input invalid dataASP.Net MVC Razor 引擎:让 javascript 函数知道用户是否输入了无效数据
【发布时间】:2013-04-02 04:38:06
【问题描述】:

我有一个视图,我想在用户发布到服务器之前根据用户输入使用 javascript 生成一个实时图表,以便他可以更清楚地可视化他正在输入的数据。但是,我需要忽略任何包含无效数据的单元格。

我正在寻找可以包含在使用现有 ASP.Net MVC 客户端验证的 javascript 函数中的检查。

我读过here 说:

if(!ViewData.ModelState.IsValid) {// Do something...

应该可以,但我得到以下 JS 运行时错误:

'ViewData' is undefined

提前致谢

乔波

【问题讨论】:

  • 警告,这个问题是在虚假前提下发布的,提供的链接是一个类似的问题。我完全地叫错了树。正如@karaxuna 所解释的那样,ViewData.ModelState.IsValid 是 C# Razor 代码,而不是 microsoft js 库。但是,基本问题仍然有效

标签: javascript asp.net-mvc razor


【解决方案1】:

您甚至无法在加载页面之前检查表单是否有效(没有发送到客户端的 C# 脚本,它在服务器端执行)。因此,您应该使用 javascript 在客户端验证表单。例如,使用 jquery 验证它是这样完成的:

var form = $('form');
if(!form.valid()){
    // Do something...
}

【讨论】:

  • 正如我所说,我收到以下运行时错误:“ViewData”未定义。实际验证有效,数据无效的字段显示为红色
  • 您应该使用 javascript,而不是 C#。在控制器的操作中编写时,您编写的验证很有用。
  • 我现在在 if 语句 (@if) 前面添加了 @,但这现在会使整个函数停止工作,并且 Visual Studio 通知我 ViewData 是 预期的常数
  • 我说的是生成视图的 c# 控制器,但是在页面内调用的 js 文件中的 javascript 函数
  • 我完全错过了之前的回复,我想说我不是在谈论 C#,我在问题中明确指出这是一个 Javascript 问题
【解决方案2】:

在 javascript 中使用 ViewData 时尝试放置 @ 符号。是这样的:

if (@ViewData.ModelState.IsValid == false) {//Do something...

这可能会有所帮助。

【讨论】:

  • ViewData.ModelState.IsValid == false 等价于 C# 中的 !ViewData.ModelState.IsValid
  • 感谢@Ali Shah Ahmed,不幸的是这并没有解决问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-16
  • 2011-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多