.NET、C#和ASP.NET三者之间的区别 使用 IntraWeb (9) - JavaScript

424 篇文章 1 订阅
317 篇文章 0 订阅

.NET、C#和ASP.NET三者之间的区别

作者:http://www.5itjob.com  发布时间:2014/8/1 12:19:58

1、.NET是一个平台,一个抽象的平台的概念。 .NET平台其本身实现的方式其实还是库,抽象层面上来看是一个平台。本人理解的.NET核心就是.NET Framwork。 .NET Framework包括两个关键组成元素:
a.Common Language Runtime,公共语言运行时(CLR)-提供内在管理,代码安全性检测等功能 b..NET Framework Class Library,.NET框架类库(FLC)-提供大量应用类库,提高开发效率  学习.NET Framework 是所有.NET 开发人员都必须的,否则开发.NET程序永远都是停留在‘外功’的招式,NET Framework 是.NET开发高手的‘内功’修行之一。

2、C#是一个程序设计语言,仅仅是一个语言。  程序设计语言仅仅是为了方便开发人员和计算机沟通的工具,虽然C#语法相对C和C++要多一些,但是相对来看C#语法都比较固定,这样使用起来却都很容易。我认可一位朋友说的,C#的语法更严谨!

这里回过来看看.NET和C#的关系,不得不提的是.NET程序的执行过程。
C#符合.NET CLR中的公共语言运行规范。CLS:common language specification,当然所有的.NET Language都是符合这个规范的例如:VB.NET、XAML和C++/CLI....等等。

 C#需要符合.NET CLS,是因为.NET CLR和JAVA 虚拟机类似,有一个中间语言共机器来执行。所有不同语言的.NET代码在执行前会被编译成同样的中间语言(MSIL),所以所有.NET支持语言都必须符合符合CLS规范。

、P.S:如果做.NET 3.0 XAML开发的朋友,可以尝试下ildasm.exe看看XAML的应用程序,会发现原来XAML其实很简单。 
、3、ASP.NET是一个网站开发的技术,仅仅是.NET框架中的一个应用模型。

 用微软公司ASP.NET快速入门中的一句话来解释,ASP.NET 是用于生成基于Web的应用程序的内容丰富的编程框架。

使用 IntraWeb (9) - JavaScript


IW 依赖 js 构建(我数了数, 在当前版本它的资源文件默认携带了 26 个 js);

但 IW 尽可能地让用户少用或不用 js, 但如果你对 js 也不陌生, IW 提供了多种途径与方便. 我给它分两大类:

1、直接写入 js 代码(站点级、页面级, 还可以精确地指定插入位置);

2、链接 *.js 文件(外链、内链, 还可以是资源文件).

首先应该说明: IW 已经霸占了 window.onload, 用户在 js 中不能再使用 onload. 如果你有一个 js 文件或模板没有如期运作, 或许是这个原因; 不过好像仅此一个, 剩下的都是方便了.

还有: 在 IW 中可以直接使用 jQuery, 当前版本携带的是: jQuery 1.8.2

1.1 - 使用窗体的 AddToInitProc 插入初始化的 js 代码
procedure TIWForm1.IWAppFormCreate(Sender: TObject);
begin
  AddToInitProc('alert("欢迎")');  //其中的 js 代码最终会被 window.onload 调用
end;


1.2 - 在控件的 ScriptEvents 属性中添加 js 代码
procedure TIWForm1.IWAppFormCreate(Sender: TObject);
begin
  IWButton1.ScriptEvents.Values['onclick'] := 'alert(this.name)'//这里的代码都应该很简单, 主要是函数调用
end;

{这在设计时更方便:}



1.3 - 可以把 js 函数写在窗体的 JavaScripts 属性中
//如果不是使用 js 文件, 就应该把 js 函数都写在 JavaScripts 属性中
procedure TIWForm1.IWAppFormCreate(Sender: TObject);
begin
  JavaScript.Text := 'function MyFun1() {alert("TIWForm1.JavaScripts");}';
  IWButton1.ScriptEvents.Values['onclick'] := 'MyFun1()';
end;

{建议在设计时使用 JavaScripts 属性}


1.4 - 只执行一次的 js 代码:
procedure TIWForm1.IWAppFormCreate(Sender: TObject);
begin
  JavaScriptOnce := 'alert("JavaScriptOnce")';
end;


1.5 - 如果要进行精确的定位插入, 需要用到窗体的 PageContext 属性
//PageContext 对象提供了更多插入方法, 下面几个只是我找到执行顺序的(下面次序就是我测试出的执行顺序)
PageContext.JavaScript;
PageContext.AddToJavaScriptOnce();
PageContext.AddToOnReady();
PageContext.AddToInitProc();
PageContext.AddToIWCLInitProc();
PageContext.AddToInitProcPageUnlockCode();
PageContext.AddToInitProcFocusCode();
PageContext.AddToInitProcNewWindowCode();
PageContext.AddToInitProcDoLastCode();


2.1 - 直接 Html 的 <Head></Head> 插入链接或代码
{在 TIWServerController 的 onCreate 事件中插入全站级的 js 链接}
procedure TIWServerController.IWServerControllerBaseCreate(Sender: TObject);
begin
  HTMLHeaders.Add('<script type="text/javascript" src="/My1.js"></script>');  //内链, 文件位于 wwwroot
  HTMLHeaders.Add('<script type="text/javascript" src="Http://.../My2.js"></script>'); //外链, 全路径
end;
//注: wwwroot 是 IW 的默认根目录, js、css 和图片等等都应该放在其中; 可通过 IWServerController.ContentPath 读取其实际路径

{在窗体的 OnCreate 事件中插入页面级的 js 链接}
procedure TIWForm1.IWAppFormCreate(Sender: TObject);
begin
  PreHeader.Add('<script type="text/javascript" src="/My3.js"></script>');   //这个在前; 但在 IWServerController.HTMLHeaders 之后
  ExtraHeader.Add('<script type="text/javascript" src="/My4.js"></script>'); //这个在后
end;
//注: 上面两个操作都可以在设计时.

//其实如果在 Head 中链接 js 或 css 应该使用 ContentFiles, 上面的嵌入方法跟适于...譬如:
procedure TIWServerController.IWServerControllerBaseCreate(Sender: TObject);
begin
  HTMLHeaders.Add('<meta name="Keywords" content="万一,Delphi,IntraWeb"/>');  //指定搜索关键字
end;


2.2 - 使用 ContentFiles 方法链接 js 或 css
{站点级 - ServerController.pas}
procedure TIWServerController.IWServerControllerBaseCreate(Sender: TObject);
begin
  ContentFiles.Add('My1.js'); //内链, 文件位于 wwwroot; 当然也可以外链
end;

{页面级 - Unit1.pas}
procedure TIWForm1.IWAppFormCreate(Sender: TObject);
begin
  ContentFiles.Add('My2.js');      //内链, 文件位于 wwwroot; 当然也可以外链
  ContentFiles.Add('MyJs/My3.js'); //内链 wwwroot/MyJs/My3.js
end;

//ContentFiles 会自动转换为 Html 需要的格式, 所以很方便


2.3 - 使用 PageContext 的方法
procedure TIWForm1.IWAppFormCreate(Sender: TObject);
begin
  PageContext.PreScriptFiles.Add('My4.js');
  PageContext.AddScriptFile('My5.js');
end;


2.4 - 把 js 嵌入到资源文件, 并调用
先从 Project > Resources and Images... 把一个 js 添加到资源文件:



这个主要是 IW 内部使用的, 其规则很玄妙. 作为 JS 资源必须是 IW_JS_ 开头, 好像对使用的字符也有限制.

另外这个资源编辑器, 从出生到现在都有点小问题, 重新打开随便点点就好了.

{下面是调用代码:}
uses IWServerInternalFiles; //为使用 gInternalFiles

{从资源中提取 js; 如果不仅仅是该页使用, 应该是从 ServerController 单元}
procedure TIWForm1.IWAppFormCreate(Sender: TObject);
begin
  gInternalFiles.Add('IW_JS_MyJS', '/js/MyJS.js'); //第一个参数资源文件名;
                                                   //第二个参数是目的(内部临时文件名), 必须是 /js/xxx.js (好像 xxx 也要求和资源文件的定义同名)
  {启用从资源提取的 js}
  PageContext.ScriptFiles.Add('/js/MyJS.js');
end;


3.1 - IW 给控件在 Html 中的重命名规则
//规则是 "控件名"(转大写) + "IWCL"

//假如点击 IWButton1 给 IWMemo1 输入内容:
procedure TIWForm1.IWButton1Click(Sender: TObject);
begin
  IWMemo1.Text := 'Delphi Hi';
end;

//但这要通过 js 实现应该是:
procedure TIWForm1.IWAppFormCreate(Sender: TObject);
begin
  IWButton1.ScriptEvents.Values['onclick'] := 'IWMEMO1IWCL.value = "Js Hi"';
end;


3.2 - 解决冲突
procedure TIWForm1.IWAppFormCreate(Sender: TObject);
begin
  IWButton1.ScriptEvents.Values['onclick'] := 'alert(1)'; //如果是这样, 哪下面的 IWButton1.OnClick 就不会执行了
//  IWButton1.ScriptEvents.Values['onclick'] := 'alert(1); return true;'; //返回(真)一下就好了
end;

procedure TIWForm1.IWButton1Click(Sender: TObject);
begin
  WebApplication.ShowMessage('2');
end;


3.3 - 使用 ScriptEvents 的 Add() 与 HookEvent() 方法添加 js 代码
procedure TIWForm1.IWAppFormCreate(Sender: TObject);
begin
  JavaScript.Text := 'function JsFun1(obj) { alert(obj.id); }';

  IWButton1.ScriptEvents.HookEvent('onclick', 'JsFun1(this)');
  IWLabel1.ScriptEvents.HookEvent('onclick', 'JsFun1(this)');

  IWButton2.ScriptEvents.HookEvent('onclick', 'alert(this.id);');

  IWButton3.ScriptEvents.Add('onclick').EventCode.Text := 'alert(this.id);';
end;


IW 还有相关调试的内容, 好的 js 编辑与调试工具太多了, 没必要使用 IW 写 js 或调试.

0
0
« 上一篇: 使用 IntraWeb (8) - 系统模板
» 下一篇: 使用 IntraWeb (10) - CSS
posted on 2014-06-09 11:38 万一 阅读( 3076) 评论( 4) 编辑 收藏



FeedBack:
#1楼   2014-06-09 16:20  littley  
万老师有没有讲授datasnap的计划?
本人非常期待这个专题的问世!
  
#2楼 [ 楼主2014-06-09 16:38  万一  
@ littley
起码近两个月没考虑, 主要是我自己用不着.
  
#3楼   2014-06-22 05:09  findumars  
datasnap才是真正的好东西,比IW要好用、实用,并发数更高。希望万一兄有空还是涉及研究一下,谢谢!!
  
#4楼 3228439 2015/7/15 15:56:43  2015-07-15 15:56  72164  
老师,怎么在js语句中判断Delphi文本框是否为空,怎么表示


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值