Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET Web API淘汰验证_Asp.net_Asp.net Mvc_Knockout.js_Asp.net Web Api_Unobtrusive Validation - Fatal编程技术网

ASP.NET Web API淘汰验证

ASP.NET Web API淘汰验证,asp.net,asp.net-mvc,knockout.js,asp.net-web-api,unobtrusive-validation,Asp.net,Asp.net Mvc,Knockout.js,Asp.net Web Api,Unobtrusive Validation,我有一个关于使用knockout和ASP.NET Web API进行客户端验证的问题。我希望视图将是完全静态的(可能不包括root index.html/cshtml),我不想通过手工在js中编写数据注释属性规则来重复我自己 我的背景是Durandal上的一个中型(约20-40个实体,带有业务层)应用程序 我发现的不成功/不适当的方式及其解释: 1。使用Breeze.js 乍一看,Breeze.js看起来正是我所需要的。工作原理:它通过/Metadata链接共享json,然后将一个映射到另一个。

我有一个关于使用knockout和ASP.NET Web API进行客户端验证的问题。我希望视图将是完全静态的(可能不包括root index.html/cshtml),我不想通过手工在js中编写数据注释属性规则来重复我自己

我的背景是Durandal上的一个中型(约20-40个实体,带有业务层)应用程序

我发现的不成功/不适当的方式及其解释:

1。使用Breeze.js

乍一看,Breeze.js看起来正是我所需要的。工作原理:它通过/Metadata链接共享json,然后将一个映射到另一个。一切都很好,但对我来说,共享实体看起来很奇怪(我需要忘记Nunit、复杂的服务器逻辑等等……而且将您的datacontext公开是很可怕的:既不安全,又不安全!)。用JObject参数保存方法对我来说也很奇怪

2。从web api获取数据,从Breeze或web api获取元数据(如何?),并在客户端进行转换

我找到的唯一解决方案与此类似,它是一个:。它在cshtml中呈现所有元数据(这不是很关键,但在我看来并不好),然后他将其映射为knockout.validate。是否有一个类似的即用框架,具有类似的功能,我可以通过json从api获取matadata,并提供in-knockout

3。在构建时以html呈现cshtml

复杂的构建过程


您是否有其他针对静态HTML和Web API应用程序的解决方案?

首先,我们必须就一件事达成一致-

如果您没有JavaScript方面的经验,第一次使用Breeze从服务器获取数据可能会很难设置

让我们来看看一些原因和如何克服这一挑战的例子,或者跳过非必要的阅读,讨论一下使用Breeze.js或任何客户端应用程序时的安全性-

<!--
    If you think this next section is 'Too Long' : 'Don't Read'
        and are just interested in security, skip down until
        you see 'Why is Breeze.js secure?'
-->

<section role="TL:DR">

breeze.js上的文档一直在更新和改进,但作为一个社区,我们可以改进以了解更多关于如何利用breeze.js的信息。以下是一些在客户端应用程序中设置breeze.js的提示和一些基本场景的方法-

<!--
    If you think this next section is 'Too Long' : 'Don't Read'
        and are just interested in security, skip down until
        you see 'Why is Breeze.js secure?'
-->

<section role="TL:DR">
基本情景
  • 从Web API控制器操作获取数据-

    您可以将Breeze.js设置为在使用Web API路由时使用它自己的元数据-

  • 使用EF/Breeze.WebApi从Web API控制器操作获取数据

    您可以将Breeze.js设置为在VS2012/13中使用ASP.NET MVC 5/Web API 2项目。如果您想了解如何将服务器端Breeze.WebApi用作助手,请查看此列表中的链接或在线教育网站(如PluralSite.com)上的链接-

    在这些示例中,您将发现如何使用当前使用的85%的web技术。这包括Angular、Durandal、MongoDb、节点、实体框架、Require、Knockout、Ruby、Twitter引导、主干等等

  • 了解微风的工作原理-

  • 从完全解耦的SPA访问服务器-

    为什么要花所有的时间建立自己的客户端数据库,创建对象图或使用不快的映射库?JavaScriptORM很快变得风靡一时,因为为什么要继续重建轮子?微风怎么能做到呢

    两个很好的例子是,完全解耦的API可以被客户端技术使用,而无需将客户端内容绑定到服务器端的任何特定堆栈

  • 为什么Breeze.js是安全的? 无论数据是什么或是如何生成的,都不应将其公开给外部世界。如果客户端或服务器端的应用程序在返回数据之前未正确验证其用户,那么如何确保在查看客户端技术之前正确验证

    使用saveChanges()发回数据时如何?

    在极少数情况下,我会设计一个应用程序,让浏览器自由漫游,发布/更新我的数据库。一种可能是,如果正在更改的内容是在我测试获取和发布数据的非常早期的开发周期中,并且业务层及其允许的内容(可能通过单元测试进行验证)被设置为允许不受限制地读取/写入数据

    但是,将基于浏览器的应用程序转移到生产环境中又如何呢? 我决不会在一份我没有读过的文件上签字,而且我100%确信该文件已经准备好签字。考虑到我使用的技术堆栈,如果不确保满足我的需求,我也决不会将代码从开发或QA环境传递到生产环境。如果使用ASP.NET MVC和会话存储用户信息是应用程序应该采取的方向,那么请使用[Authorize]属性修饰控制器操作。如果您有另一种形式的安全性,那么您需要始终保持所公开数据的适当安全级别


    永远不要相信基于浏览器的应用程序会为您提供非恶意内容,即使是99.99%的时间-0.01%可能是压垮骆驼背的稻草。

    Re:Breeze-我不太明白为什么公开datacontext既不安全又不安全-如果您有一个Web API操作可以在没有安全的情况下进行,那么这不是一个容易的问题——这是您拥有不安全API的问题。使用像Breeze这样的库的原因是将客户端代码与服务器端代码分离。我不知道有什么理由仅仅为了使用Breeze.js.Thx PW Kad而删除服务器端逻辑,可能只是我不理解Breeze的原因。我只是在他们的网站上看到了hello world的例子,john papa pluralsight hello world training。如果我没有弄错的话,breeze是专门为非复杂的helloworld应用开发的,没有真正的