Javascript 调用C# 代码并传递参数的两种方法

             Javascript调用C#代码的方法网上介绍了很多种方法,也很详细,但没有向C#传递参数的方法。今天刚好用到,搞了半天才搞出来(其实我很笨)。下面说一下具体实现的方法。 一、使用HiddenField 控件。      HiddenField控件顾名思义就是隐藏输入框的服务器控件,它能让你保存那些不需要显示在页面上的且对 安全性要求不高的数据。也许这个时候应该有这么一个疑问,为什么有了ViewState、Session和Cookie等状态保存机制,还需要用起HiddenField呢?    增加HiddenField,其实是为了让整个状态管理机制的应用程度更加全面。因为不管是ViewState、Cookie还是Session,都有 其失效的时候,比如用户因某种需求要求设置ViewState为false,或者环境条件限制使用Cookie,或者用户长时间没有动作导致 Session过期等等,那这个时候HiddenField无疑是最佳选择。   HiddenField控件的作用简单的说是用于存 储需要在向服务器的发送间保持的值。它作为 <input type= "hidden"/> 元素呈现,并且通过添加runat=”server”就可以使它成为标准的HTML服务器控件。下面列出的是ASP.NET HiddenField Web服务器控件可以使用的属性和事件。       
        <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /><asp:Button

        <a href="javascript:TestPostValue('test')">Test Post By HiddenField</a><br/>

    <asp:HiddenField ID="hidden" runat="server" />



...

    <script type="text/javascript">

   function TestPostValue(value)

{

    document.getElementById("hidden").value=value;

    document.getElementById("Button1").click();

}

    </script>
        protected void Button1_Click(object sender, EventArgs e)

        {

            Response.Write(hidden.Value);

        }


二、利用Cookies

Cookie的用法也和ASP中差不多。

比如我们建立一个名为aspcn,值为飞刀的cookie HttpCookie cookie = new HttpCookie["aspcn"]; cookie.Value = "飞刀"; Response.AppendCookie(cookie); 我们取出Cookie值也很简单 HttpCookie cookie = Request.Cookies["aspcn"]; cookieValue = cookie.Value; 有时候我们想在一个Cookie中储存多个信息,那也没有问题。比如我们在名为aspcn的cookie下加多个信息 HttpCookie cookie = new HttpCookie("aspcn"); cookie.Values.Add("webmaster","飞刀"); cookie.Values.Add("writer","beige"); cookie.Values.Add("LinkColor","blue"); Response.AppendCookie(cookie); 取出信息也一样简单 HttpCookie cookie = Request.Cookies["aspcn"]; value1 = cookies.Values["webmaster"]; value2 = cookies.Values["writer"];

View State

这是一个新出来的东东,用法和Session一样,他的主要用途是记录Web Control的状态。虽然是新出来的,但是和Application、Session的用法没有什么区别,所以也不想详细讲解了。 State["DropLoadIndex"] = 0 ; 基本用法如上:),但是请记住,他保存在的信息只能在一个aspx文件中使用。出去后,这个就没有用了,因为他的用途只是保存WEB控件的状态。

我的实现代码:

<asp:Button         ID="Button2" runat="server" Text="Button" OnClick="Button2_Click" />

        <a href="javascript:TestPostByCookies('Test')">Test Post By Cookies</a>

function TestPostByCookies(value)

{

    SetCookie("myCookie",value);

    document.getElementById("Button2").click();

}





//写cookies函数 作者:翟振凯

function SetCookie(name,value)//两个参数,一个是cookie的名子,一个是值

{

    var Days = 30; //此 cookie 将被保存 30 天

    var exp  = new Date();    //new Date("December 31, 9998");

    exp.setTime(exp.getTime() + Days*24*60*60*1000);

    document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();

}

function getCookie(name)//取cookies函数        

{

    var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));

     if(arr != null) return unescape(arr[2]); return null;



}

function delCookie(name)//删除cookie

{

    var exp = new Date();

    exp.setTime(exp.getTime() - 1);

    var cval=getCookie(name);

    if(cval!=null) document.cookie= name + "="+cval+";expires="+exp.toGMTString();

}

        protected void Button2_Click(object sender, EventArgs e)

        {

            HttpCookie cook =  Request.Cookies["myCookie"];

            Response.Write(cook.Value);

        }

 


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
C#中,关于delegate的四种方法可以简要总结如下: 1. 使用delegate关键字声明一个委托类型,然后通过实例化委托类型来创建一个委托实例,最后通过委托实例来调用方法。 2. 使用匿名方法来创建委托实例,匿名方法允许我们在需要的地方内联定义一个方法。 3. 使用Lambda表达式来创建委托实例,Lambda表达式提供了一种简洁的语法形式来定义匿名方法,并且可以自动推断参数的类型。 4. 使用Func、Action和Predicate等预定义的委托类型来创建委托实例,这些预定义的委托类型提供了不同数量和类型的参数,并且可以指定返回值的类型。 总结起来,C#中使用delegate的四种方法是:使用delegate关键字声明委托类型并实例化、使用匿名方法、使用Lambda表达式和使用预定义的委托类型。这些方法都可以用来创建委托实例并调用相应的方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [C# Delegate讲解](https://download.csdn.net/download/liyangaad/10160723)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [C#使用委托(delegate)实现在两个form之间传递数据的方法](https://download.csdn.net/download/weixin_38704565/14868625)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [C#利用delegate实现Javascript的each方法](https://download.csdn.net/download/weixin_38694541/13990952)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值