【问题标题】:Can you run custom code after server-side validation in asp.net?在 asp.net 中进行服务器端验证后,您可以运行自定义代码吗?
【发布时间】:2014-10-04 09:29:13
【问题描述】:

我想知道是否可以通过视图模型 (MVC) 向客户端返回一些值,或者在知道验证结果后在客户端上执行一些 javascript。

有人熟悉合适的类和方法吗?

【问题讨论】:

    标签: javascript asp.net validation


    【解决方案1】:

    当然可以,因为正常的 AJAX 请求会返回答案。 如果您将此答案设为有效 JSON 并从中重新组装客户端模型,则对其进行验证并相应地运行代码。

    我通常通过在来自 MVC 的 ajax 回复中添加“成功”和“有效负载”来解决这个问题。 所有客户端 Ajax 调用都会检查“成功”值,并相应地决定使用有效负载。

    例如:

    回复是:

    {success : false, payload:"A null pointer occurred somehwere."}
    

    或:

    {success : true, payload:{id:12, label:"banana"}}
    

    然后我可以在我的 ajax 调用中执行此操作:

    var yourViewmodel = {id:null, label:"banana"};
    
    jQuery.ajax({
              cache: false,
              url: "./save",
              type: "POST",
              data: yourViewmodel,
              success: function (response) {
                  if(response.success == true)
                  {
                     if(!validate(response.payload))
                     {
                        //something about the response payload still was not valid!
                     }
                     else
                     {
                        //here we can do whatever we want to do if the response was valid.
                        onAfterValidate(response.payload);
                     }
                  }
                  else
                  {
                     alert("An error occurred : " + response.payload);
                  }
              },
              error: function(data, errorThrown)
              {
                  alert('request failed :'+errorThrown);
              }
    });
    

    【讨论】:

    • 我目前正在使用扩展验证属性类的服务器端类进行验证。这些绑定到我的模型,该模型将视图呈现给客户端。我不相信我可以访问允许这种通信的 ajax 代码...你知道我怎样才能访问它吗?
    • 哦,您的意思是您在视图模型中使用了验证属性
    • 是的,对不起,我想我应该提到这一点。我已经编写了自定义验证器,这些验证器使用我的视图模型中需要验证的字段上方的属性来应用......
    • 有一个专门为此构建的 jQuery 库。例如,请参阅此问题:stackoverflow.com/questions/14005773/…
    猜你喜欢
    • 2010-09-12
    • 2010-11-10
    • 2012-07-31
    • 1970-01-01
    • 1970-01-01
    • 2017-05-03
    • 1970-01-01
    • 1970-01-01
    • 2021-07-10
    相关资源
    最近更新 更多