Javascript调用C#代码的方法网上介绍了很多种方法,也很详细,但没有向C#传递参数的方法。今天刚好用到,搞了半天才搞出来(其实我很笨)。下面说一下具体实现的方法。一、使用HiddenField控件。HiddenField控件顾名思义就是隐藏输入框的服务器控件,它能让你保存那些不需要显示在页面上的且对安全性要求不高的数据。也许这个时候应该有这么一个疑问,为什么有了ViewState、Session和Cookie等状态保存机制,还需要用起HiddenField呢?增加HiddenField,其实是为了让整个状态管理机制的应用程度更加全面。因为不管是ViewState、Cookie还是Session,都有其失效的时候,比如用户因某种需求要求设置ViewState为false,或者环境条件限制使用Cookie,或者用户长时间没有动作导致Session过期等等,那这个时候HiddenField无疑是最佳选择。HiddenField控件的作用简单的说是用于存储需要在向服务器的发送间保持的值。它作为<inputtype=hidden/>元素呈现,并且通过添加runat=server就可以使它成为标准的HTML服务器控件。下面列出的是ASP.NETHiddenFieldWeb服务器控件可以使用的属性和事件。viewplaincopytoclipboardprint?
asp:ButtonID=Button1runat=serverText=ButtonOnClick=Button1_Click/asp:Button
ahref=javascript:TestPostValue('test')TestPostByHiddenField/abr/
asp:HiddenFieldID=hiddenrunat=server/
asp:ButtonID=Button1runat=serverText=ButtonOnClick=Button1_Click/asp:Button
ahref=javascript:TestPostValue('test')TestPostByHiddenField/abr/
asp:HiddenFieldID=hiddenrunat=server/
...
viewplaincopytoclipboardprint?
scripttype=text/javascript
functionTestPostValue(value)
{
document.getElementById(hidden).value=value;
document.getElementById(Button1).click();
}
/script
scripttype=text/javascript
functionTestPostValue(value)
{
document.getElementById(hidden).value=value;
document.getElementById(Button1).click();
}
/scriptviewplaincopytoclipboardprint?
protectedvoidButton1_Click(objectsender,EventArgse)
{
Response.Write(hidden.Value);
}
二、利用Cookies
protectedvoidButton1_Click(objectsender,EventArgse)
{
Response.Write(hidden.Value);
}
二、利用Cookies
Cookie的用法也和ASP中差不多。
比如我们建立一个名为aspcn,值为飞刀的cookieHttpCookiecookie=newHttpCookie[aspcn];cookie.Value=飞刀;Response.AppendCookie(cookie);我们取出Cookie值也很简单HttpCookiecookie=Request.Cookies[aspcn];cookieValue=cookie.Value;有时候我们想在一个Cookie中储存多个信息,那也没有问题。比如我们在名为aspcn的cookie下加多个信息HttpCookiecookie=newHttpCookie(aspcn);cookie.Values.Add(webmaster,飞刀);cookie.Values.Add(writer,beige);cookie.Values.Add(LinkColor,blue);Response.AppendCookie(cookie);取出信息也一样简单HttpCookiecookie=Request.Cookies[aspcn];value1=cookies.Values[webmaster];value2=cookies.Values[writer];
ViewState
这是一个新出来的东东,用法和Session一样,他的主要用途是记录WebControl的状态。虽然是新出来的,但是和Application、Session的用法没有什么区别,所以也不想详细讲解了。State[DropLoadIndex]=0;基本用法如上:),但是请记住,他保存在的信息只能在一个aspx文件中使用。出去后,这个就没有用了,因为他的用途只是保存WEB控件的状态。
我的实现代码:
asp:ButtonID=Button2runat=serverText=ButtonOnClick=Button2_Click/
ahref=javascript:TestPostByCookies('Test')TestPostByCookies/a
asp:ButtonID=Button2runat=serverText=ButtonOnClick=Button2_Click/
ahref=javascript:TestPostByCookies('Test')TestPostByCookies/a
viewplaincopytoclipboardprint?
functionTestPostByCookies(value)
{
SetCookie(myCookie,value);
document.getElementById(Button2).click();
}
//写cookies函数作者:翟振凯
functionSetCookie(name,value)//两个参数,一个是cookie的名子,一个是值
{
varDays=30;//此cookie将被保存30天
varexp=newDate();//newDate(December31,9998);
exp.setTime(exp.getTime()+Days*24*60*60*1000);
document.cookie=name+=+escape(value)+;expires=+exp.toGMTString();}
functiongetCookie(name)//取cookies函数
{
vararr=document.cookie.match(newRegExp((^|)+name+=([^;]*)(;|$)));
if(arr!=null)returnunescape(arr[2]);returnnull;
}
functiondelCookie(name)//删除cookie
{
varexp=newDate();
exp.setTime(exp.getTime()-1);
varcval=getCookie(name);
if(cval!=null)document.cookie=name+=+cval+;expires=+exp.toGMTString();
}
functionTestPostByCookies(value)
{
SetCookie(myCookie,value);
document.getElementById(Button2).click();
}
//写cookies函数作者:翟振凯
functionSetCookie(name,value)//两个参数,一个是cookie的名子,一个是值
{
varDays=30;//此cookie将被保存30天
varexp=newDate();//newDate(December31,9998);
exp.setTime(exp.getTime()+Days*24*60*60*1000);
document.cookie=name+=+escape(value)+;expires=+exp.toGMTString();
}
functiongetCookie(name)//取cookies函数
{
vararr=document.cookie.match(newRegExp((^|)+name+=([^;]*)(;|$)));
if(arr!=null)returnunescape(arr[2]);returnnull;
}
functiondelCookie(name)//删除cookie
{
varexp=newDate();
exp.setTime(exp.getTime()-1);
varcval=getCookie(name);
if(cval!=null)document.cookie=name+=+cval+;expires=+exp.toGMTString();
}
viewplaincopytoclipboardprint?
protectedvoidButton2_Click(objectsender,EventArgse)
{
HttpCookiecook=Request.Cookies[myCookie];
Response.Write(cook.Value);
0 评论:
发表评论