是否可以在没有视图状态和回发的情况下使用asp.net web表单

Is it possible to use asp.net web forms without viewstate and postbacks

本文关键字:情况下 asp 表单 web net 视图状态 是否      更新时间:2024-03-19

也许标题不够清晰。我必须使用asp.net网页表单——这是一项要求,对此我无能为力。我想避免服务器控制(如网格、下拉列表等)我想在大多数操作中使用ajax,并使用前端,如angular或knockout。我想为所有后端操作构建一个webapi项目。因此,视图背后的代码将是最小的,web api将是核心操作处理程序。作为这个问题的答案,我需要的都是关于架构的。这就是我计划用自然的方式制作应用程序的原因吗?或者这是完全错误的做事方式?

如果我理解正确,您希望实现类似SPA的东西(https://en.wikipedia.org/wiki/Single-page_application)。

你说得对,你不需要ASP.NET Web窗体(这太过分了)。更好的方法是使用ASP.NET WebAPI和一些视图引擎(如Razor)来渲染页面(如果需要的话)。

毕竟:您写道,必须使用ASP.NET Web窗体,并且。。。是的,可以在没有视图状态和回发的情况下使用asp.net web表单(您只是不使用它,或者使用它来呈现主页(索引),好吗?)。

更重要的是,您可以在单个项目中同时使用Controller和ApiController继承器,但您必须像这样为您的API添加路由(将其添加到Application_Start方法中):

RouteTable.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { id = System.Web.Http.RouteParameter.Optional }
);

您绝对可以在没有视图状态和回调的情况下使用asp.net。为此,我创建了一个大型数据库应用程序。我的下拉列表、链接等都不会导致回发到服务器(通过在所有链接上返回"false",确保"自动回发"设置为false等来完成)。你不会从gridView控件中获得太多(如果有的话)功能,因为对于分页,它会返回到服务器。你必须自己写页码/滚动,但你可以在WO上找到这样的例子。

确实广泛使用了在初始加载时填写表单的代码。对于填充数据、格式化文本框、分配样式等,"load"answers"init"事件运行良好,我喜欢在代码后面使用"this.textbox"。通过这种方式,我可以使页面上的HTML非常有限——后面的代码完成了页面格式化的所有繁重工作。

我在对话框、选项卡等的前端使用JQuery和JQuery UI。我选择它是因为它重量轻、易于使用且无处不在。我们的许多数据库更新都是点击网格中的一个元素,弹出并阻止一个对话框,用ajax检索数据,填充框,取消阻止对话框。

经过大量的尝试和错误,我已经消除了网络表单中我不喜欢的所有部分(主要是视图状态和完整的post-back事件模型),并保留了我非常喜欢的部分(用于管理加载页面的代码)。

最后,我确实不喜欢更新面板。它们的前景很好,但要让它们在没有愚蠢工件的情况下工作是一个挑战,而且它们不能很好地与jQueryUI集成。由于要限制/消除回发/查看状态,因此无论如何都不会使用它们。

相关文章: