本文为弘帝独家首创,是弘帝重大发现,解决了不同语种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等新生网页编程语言统一化就迎任而解了。
极致编程 弘帝很优秀 弘帝建站系统值得您的信赖。 |