自訂WEB控制項中嵌入JS檔案ASP.NET

來源:互聯網
上載者:User
ASP.NET自訂WEB控制項中嵌入JS檔案
一直想做一些自訂控制項,能進行一些UI上的驗證.於是就需要使用到嵌入的JS檔案.

找了一些資料,找了些例子,發現不行,首先把JS文 件設為嵌入資源是都有說的,

但[assembly: WebResource("SYJ0.dir0.js1.js", "application/x-javascript", PerformSubstitution = true)]中SYJ0的說明就不一樣了.有的說是命名空間,有的說是項目名.都不是很正確.

原因分析:這些資料基本上所說都是建立的項目和命名空間相同.所以可能不會遇到問題.然而我建立的項目是不同的項目名.
如:我建立的控制項陳列庫項目名為WebCtrls,然後修改了項目的預設命名空間為SYJ0.而在代碼中的命名空間使用了SYJ...(有點混亂).
所以使用網上找的一些例子就是運行不了,要麼沒反應,要麼提示出錯...

最後解決:
[assembly: WebResource("SYJ0.dir0.js1.js", "application/x-javascript", PerformSubstitution = true)]中SYJ0應該是項目屬性視窗的那個預設命名空間名稱.
後面跟JS檔案的路徑.如SYJ0.dir0.js1.js表示,預設命名空間SYJ0下面的dir0目錄下的js1.js檔案.
當然 this.Page.ClientScript.RegisterClientScriptResource(this.GetType(), "SYJ0.dir0.js1.js");這句也不要寫錯了.

請注意大小寫,沒有測試是否區分大小寫,還是注意一下.

下面是一完整的控制項陳列庫項目的例子:
[Class1.cs]
using System;
using System.Web.UI.WebControls;
using System.Web.UI;

[assembly: WebResource("SYJ0.JScript1.js", "application/x-javascript", PerformSubstitution = true)]
[assembly: WebResource("SYJ0.dir0.js1.js", "application/x-javascript", PerformSubstitution = true)]

namespace SYJ
{
public class STextBox : WebControl, INamingContainer
{
protected TextBox textBox = new TextBox();

protected override void OnPreRender(EventArgs e)
{
this.Page.ClientScript.RegisterClientScriptResource(this.GetType(), "SYJ0.JScript1.js");
this.Page.ClientScript.RegisterClientScriptResource(this.GetType(), "SYJ0.dir0.js1.js");
base.OnPreRender(e);
}
protected override void RenderContents(System.Web.UI.HtmlTextWriter writer)
{
this.textBox.Attributes.Add("id", this.ID);
this.textBox.Attributes.Add("onclick", "msg(this);showTime();");
this.textBox.RenderControl(writer);
}
}
}

// JScript1.js
function msg(obj)
{
alert("hello from web control s js file id["+obj.id+"]");
}

// dir0.js1.js
function showTime()
{
alert(new Date());
}

使用方法:
用VS2008建一個解決方案,建立一個預設WEB項目為WebApplication,再建一個庫項目.
將庫項目的Class1.cs內容換成如上的內容,再在項目下直接建立一個JScript.js檔案,再直接建立一個檔案夾dir0,在dir0建立一個js1.js檔案,內容分別如上所述.
編譯一下,然後轉到WEB項目的ASPX頁面中,此時開啟工具箱,應該會顯示出我們建立的自訂控制項STextBox.直接拖一個到頁面,CTRL+F5執行,點擊輸入框看效果.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.