弘帝企业智能建站系统交流平台

 找回密码
 立即注册
查看: 704|回复: 0

关于RequestForm在ASP与C#通用的研究

[复制链接]
发表于 2022-4-2 22:09:18 | 显示全部楼层 |阅读模式
本文为弘帝独家首创,是弘帝重大发现,解决了不同语种POST传值的困惑,转载请附本网链接,谢谢。

在ASP与C#使用同一代码的DLL进行Request传值时,无法实现asp与C#的Request互通,但我们突然发现RequestForm在ASP与C#中似乎同时支持接受参数,于是我们尝试参数的传递用RequestForm进行。
主要有两种好处:
1、可以完全遍历所有的Request.Form参数,极大减少多余的传参代码量,前端二次开发变得精练。
2、接收参数时,只需在相应的运行时函数定义已经明确的参数,无需在DLL入口遍历整站上百个参数
3、DLL接受运行时生成的参数时,可以通过二维数组实现外部未知参数的传值,弘帝建站系统允许自定义个性字段时,变得非常灵活。
4、DLL接受未知的规律性运行时参数时,也可以通过规律法则智能处理相应事件实现所需功能。

关于1是前端设计,可以通过弘帝建站系统案例进行前端传值:
A)已知值传递:
$("[name=target]").click(function () {
    $.ajax({
        type: 'post',
        dataType: 'html',
        data: {ajax:1,step:1,target:$("[name=target]:checked").attr("data"),mid:$("[name=mid]").val()},
        success: function (data) {
            console.log(data);
        }
    });
});

B)未知值传递:
$("form[name=HD_Form]").on("submit", function () {
        $.ajax({
                type: 'post',
                dataType: 'html',
                data: $(this).serialize(),
                success: function (data) {
                        console.log(data);
                }
        });
        return false;
})


解决了前端,下面是后端接收参数值后传值核心组件DLL:
ASP与C#通用代码:Set HL.RequestForm=Request.Form,试行通过。


核心组件DLL接收值的办法,起始于弘帝核心组件HCMS:
关于2:见Search模块类,其中MenuID和Target是已知待的参数名,由Name辨别
Search.Login_Default(){
    Dim Name As Variant
    Dim Target As String
    Dim MenuID as Integer

    On Error Resume Next

    For Each Name In RequestForm
        Select Case LCase(Name)
        Case "target"
            Target = RequestForm(Name)
        Case "mid"
            MenuID = RequestForm(Name)
        End Select
    Next

}

关于3:Admin.Privileges{
    Set ClassNavigator = New Navigator
'    Set ClassNavigator.Response = Response
    ClassNavigator.CompanyID = CompanyID
    ClassNavigator.Language = AdminLanguage
    ClassNavigator.Action = Action
    Set ClassNavigator.RequestForm = RequestForm
    ClassNavigator.RootPath = RootPath
    ClassNavigator.TableType = 2
    Container = Container & ClassNavigator.UpdatePrivileges

}

关于4:
Navigator.UpdatePrivileges{
        For Each Name In RequestForm
            If Left(Name, 5) = "radio" Then
                Sql = "Update HD_Menu_" & Table & " SET HD_Show=" & RequestForm(Name) & " WHERE HD_ID=" & Replace(Name, "radio", "")
                HD_Conn.Execute Sql
                If Err <> 0 Then UpdatePrivileges = ClassFunction.Alert("操作失败! " & Err.Description): Exit Function
            End If
        Next
}

以上在弘帝建站系统HCMS已经全面实现,这一发现一下突破了弘帝遇到了自始至今一直难以摆脱的研发瓶颈,脱离非托管DLL编程成为了现实,HCMS版本意义重大,是弘帝划时代的跃进。

关于新技术的研发思考:
ASP与C#似乎已经全面解决传值问题,但编程语言还有PHP与JSP等,包括C#是否存在特殊情况,下面的思考值得商榷,供参考:
如果不能使用RequestForm进行参数的接收,通过研究ASP发现接受HTML传POST参数如下:
ajax=1&step=1&target=func&mid=12
是由&进行分隔每一个参数,=进行参数与值的辨识
所以弘帝在想,是不是直接通过分解POST字符串,可以实现RequestForm同样效果呢?这样PHP与JSP等新生网页编程语言统一化就迎任而解了。

极致编程 弘帝很优秀 弘帝建站系统值得您的信赖。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|弘帝企业智能建站系统 ( 皖ICP备07503252号 )

GMT+8, 2024-4-24 01:07 , Processed in 0.093268 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表