欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Asp.net MVC 3中Session与ViewBag传值到Js中

程序员文章站 2022-03-02 22:38:20
asp.net mvc 3 中session与viewbag传值到javascript中, 主要方法有: 1. 使用javascript variable   假设有say _l...

asp.net mvc 3 中session与viewbag传值到javascript中, 主要方法有:
1. 使用javascript variable  
假设有say _layout.cshtml
<head>
    ...
    <link href="@url.content("~/content/site.css")" rel="stylesheet" type="text/css" />
    @rendersection("my_script_variables", false)
    <script src="@url.content("~/scripts/external.js")" type="text/javascript"></script>
    ...
</head>


增加到你的view:

@section my_script_variables {
<script type="text/javascript"> 
  var variable1 = '@myvar1', variable2 = '@session["myvar2"]', variable3 = '@viewbag.myvar3';  
 </script>
}
 
假设你有这样的value:
@{    string myvar1 = "first";    session["myvar2"] = "second";    viewbag.myvar3 = "third"; }
 
在外部的js文件中,你到得来first second third的alert消息。
alert(variable1 + ' ' +variable2 +' '+ variable3);
 
2.使用controller的特性
可以放一个参数到你的控件
<input type="hidden" value="@session["myvar2"]" id="myhiddenvar" />

然后
alert($('#myhiddenvar').val());
也可以使用data特性:
<a id="mylink" data-variable1="@myvar1" data-variable2="@session["myvar2"]" data-variable3="@viewbag.myvar3">
    test</a>
 
然后在外面引用的js中:
$('#mylink').click(function () {
 alert($(this).data('variable1')+' ' +$(this).data('variable2')+'
'+$(this).data('variable3')); }
);
我们得到同样的结果
 
3.razorjs
 
  你可以从nuget安装它.  它允许你写razor风格的c#代码在js文件中。
view:
@{    
    string var1 = "first"; session["var2"] = "second";
       viewbag.var3 = "third";
       dictionary<string, string> test1 = new dictionary<string, string>();
       test1.add("var1", var1);
       test1.add("var2", session["var2"].tostring());
       test1.add("var3", viewbag.var3);   
  }
@html.razorjsinline("~/scripts/external.js", test1);
 
然后在外部的external.js中:
@{
    var myobj = (dictionary<string, string>)model;
 }
alert( +' '+ ' );

 
最后还是同样的结果。
希望对你web开发有帮助。

 


作者:petter liu