Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.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
Jquery ASP.NETMVC客户端和服务器端计算_Jquery_Asp.net Mvc_Json_Knockout.js - Fatal编程技术网

Jquery ASP.NETMVC客户端和服务器端计算

Jquery ASP.NETMVC客户端和服务器端计算,jquery,asp.net-mvc,json,knockout.js,Jquery,Asp.net Mvc,Json,Knockout.js,我是ASP.NETMVC新手,正在努力保持MVC开发模式的正确使用。我有点迷失在所有不同技术的混合中 基本上,我有一个针对模型的强类型表单。为了简单起见,假设模型中有三个整数。Int1、Int2和Total。我想创建一个表单,允许用户在Int1和Int2中输入值,然后在其中任何一个更改时立即更新显示给用户的Total字段。然后,我希望允许用户点击save,如果他们对total和HTTP返回控制器感到满意,那么这三个字段都将被保存到数据库中 现在我开始使用Jquery OnChange()进行计算

我是ASP.NETMVC新手,正在努力保持MVC开发模式的正确使用。我有点迷失在所有不同技术的混合中

基本上,我有一个针对模型的强类型表单。为了简单起见,假设模型中有三个整数。Int1、Int2和Total。我想创建一个表单,允许用户在Int1和Int2中输入值,然后在其中任何一个更改时立即更新显示给用户的Total字段。然后,我希望允许用户点击save,如果他们对total和HTTP返回控制器感到满意,那么这三个字段都将被保存到数据库中

现在我开始使用Jquery OnChange()进行计算,并设置有效的合计值。然而,我觉得在我的视野内进行计算时,我似乎正在远离真正的MVC


像淘汰赛和JSON这样的比赛会在这里进行吗?我希望尽可能多地使用MVC的最佳实践。

淘汰和JSON仍将发回服务器。鼓励在客户端进行操作,因为这会使您的应用程序更具响应性。只有在绝对必要的情况下,您才应该发布到服务器。在某种程度上,我倾向于在客户端尽我所能。MVC只处理将请求的网页发送到用户的web浏览器。一旦浏览器收到它,MVC将不会再次进入图片,除非您发送一个新的web请求(无论是通过页面重定向、ajax调用还是任何其他方式来启动web请求)

浏览器中发生的任何事情都不是MVC的一部分。这并不意味着你应该避开基于客户端的交互!这只意味着您将使用MVC以外的其他工具来提供这部分用户体验

如果您对客户端平滑的用户体验有相当大的需求,那么有很多javascript框架可供选择

但对于在用户输入单独的值时计算总数的示例,可以通过javascript轻松解决,也许最好是jQuery

但是您不应该担心脱离MVC结构。它不应该是一个包罗万象的框架。ASP.NETMVC和javascript/jQuery之间有着很好的协同作用,我只能鼓励这种方法


长话短说:你在正确的轨道上。没有理由怀疑你自己。

如果你能在服务器上计算出Int1+Int2的总数,为什么你需要公布总数?我试图使表单的示例变得简单。比方说,我希望用户在点击save之前通过向他们显示来知道In1+Int2的总数。通过这种方式,他们可以在将总数发回服务器并保存到数据库之前,根据自己的意愿更改Int1或Int2。@user3644926:D。Rosado说得对,将总数发回服务器是多余的。假设您的用户足够聪明,可以更改总价值(例如,他购买了两件价值100美元的物品,然后将总价值更改为2美元)。当值被发回时,您仍然需要计算总数。在网页上显示总数实际上只应该用作对用户有用的提示,而不是依赖于表单的值。不是说你的方法是错误的,但是它会有更多的错误和恶意行为。谢谢大家!我一个人完成这件事,有很多事情需要我去思考。不过,我已经开始弄明白了。使用jQuery/Knockout,通过显示表单输入的任何必要计算,使视图对用户输入更具响应性。然后,不会将这些值发布回控制器以维护安全性,并在保存到控制器内的客户端之前重新计算。请记住,从数据发送/存储的角度来看,计算出的数据(例如,如果您已经知道要添加的所有数目的总和)从来都不相关。它们也不需要存储在数据库中。除非重新计算(并获取所有需要的数据)是您不愿意承受的性能损失(大多数情况下,这是可以忽略不计的)