首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >作为Ajax中介的VBNet Webforms Webforms

作为Ajax中介的VBNet Webforms Webforms
EN

Stack Overflow用户
提问于 2019-03-26 22:00:40
回答 1查看 26关注 0票数 0

我是一名PHP/Vue.js/jQuery开发人员,他刚刚开始了一项新工作,我的第一项任务是清理2009年用Visual编写的Web窗体项目。如果这听起来毫无头绪,那是因为在很多方面都是如此。

我希望创建一个web服务(或其他什么),作为web ui aspx文件和背景中的项目作用域VB类之间的接口。我希望让javascript ajax请求连接到.asmx文件中的轻量级中间方法,这些方法将把请求路由到执行繁重任务的各个类。我的想法是,这样我就可以以一种易于管理的方式将后端逻辑与前端逻辑分开,它们可以接收来自我的web服务或来自不同vb类的呼叫,并相应地做出响应。

我的问题是:

  1. 这是一种可行的/明智的方法吗?如果没有,你能告诉我我的思维过程有什么问题吗?
  2. 如果这是实心的,那么:
    1. 我可以将web服务拆分为多个文件吗?
    2. 有什么我该知道的吗?

编辑:也因为我相信这是一个更好的解决方案,而且肯定会被考虑到的:我被要求不要把它转移到MVC/Web

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-27 03:35:00

WebForms拥有前端和项目范围文件之间的代码隐藏文件,其思想是用于UI的aspx,对业务层进行代码隐藏,然后调用进一步的业务层或数据层。

另外,不要忘记,对于WebForms来说,标准行为是在表单控件提交时将页面发回给自己。改变这种行为可能会使以后的修改/维护变得更加困难,因为某些部分将使用新的处理程序/AJAX调用模型,而其他部分则使用回发模式和代码隐藏页面。

最终,你所描述的东西并没有本质上的问题。它仍然是一个可行的范例,它只是没有利用WebForms的好处,而您仍然受到它们的缺点的限制。

也就是说,我可能不会将ASMX文件用于您正在尝试的内容。ASMX是'WebServices‘,它们默认为SOAP和“WebMethods”。

如果在AJAX调用中使用ASHX (泛型处理程序),您可能会有更好的体验。ASHX将返回您告诉它的任何内容,并且没有真正的“默认”行为。因此,您可以很容易地让它们使用JSON或XML进行响应。

根据您之前的经验,我猜测会抓住您的最大问题是,默认情况下,WebForms会根据需要根据控件的父级更改服务器控件的ID。

所以,如果你有以下任何一个:

代码语言:javascript
复制
<asp:textbox runat="server" id="txtFoo" />
<input type="text" runat="server" id="txtBar" />

它们不会找到DOM元素

代码语言:javascript
复制
$("#txtFoo").on("change", function() {alert('hi');});
$("#txtBar").on("change", function() {alert('hi');});

但这些会

代码语言:javascript
复制
$("#<% Response.Write(txtFoo.ClientId)%>").on("change", function() {alert('hi');});
$("#<% Response.Write(txtBar.ClientId)%>").on("change", function() {alert('hi');});

更让人困惑的是,如果你有这个:

代码语言:javascript
复制
<input type="text" id="txtFooBar" />

然后它会找到一个DOM元素

代码语言:javascript
复制
$("#txtFooBar").on("change", function() {alert('hi');});

原因是txtFooBar不是服务器控件,而txtFoo和txtBar是服务器控件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55366804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档