一个控制器的View视图页面,引用了一个自己写的js文件JavaScript.js,视图代码如下:
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<div>
</div>
<script src="~/Scripts/JavaScript.js"></script>
<script type="text/javascript">
Add();
</script>
</body>
</html>
这个JavaScript.js文件内容如下:
a = 1; //这个变量如何用服务器中在控制器的方法中赋予变量初始值
function Add() {
alert(a + 123);
}
如何在这个视图的控制器方法中初始化引用的这个JavaScript.js中变量a的初始值
public class TestController : Controller
{
// GET: Test
public ActionResult Index()
{
return View();
}
}
方法有很多,比如你可以用ViewBag
public class TestController : Controller
{
// GET: Test
public ActionResult Index()
{
ViewBag.a = 1;
return View();
}
}
a = '@ViewBag.a'; //这个变量如何用服务器中在控制器的方法中赋予变量初始值
function Add() {
alert(a + 123);
}
在后台直接写你要的值然后传到前台,前台a来获取后台传的这个值。你试试
如果你是在某个Model中的变量,也可以返回Model,然后用这个Model去访问,当然也可以通过ajax请求数据,获取返回值然后赋值,你要什么方法给你什么方法
如果你这个函数所在js文件不在这个页面的js里面,那么可以通过传值的方式,当然你觉得麻烦的话,你也可以在那个单独的js里面通过ajax的方式获取这值,然后初始化,看你喜欢怎么用
var a;
function Init_a(e)
{
a = 'e;//这个变量如何用服务器中在控制器的方法中赋予变量初始值
}
然后在这个页面调用这个 Init_a('@ViewBag.a');
var a;
function Init_a(e)
{
a = e;//这个变量如何用服务器中在控制器的方法中赋予变量初始值
}
刚刚多了一个'号
这个变量如何用服务器中在控制器的方法中赋予变量初始值
首先明确一个前提,单独在 js 文件中是无法用 razor 引擎的 @ 转义的,
而在 cshtml 中的 js 代码是可以通过服务器端动态控制生成的。
在明确了这个前提的情况下解决方案如下:
test.js 文件内容如下:
注意 a 是函数的入口参数
function Add(a) {
alert(a + 123);
}
cshtml 页面代码如下:
var value = @ViewBag.value ; Add(value);** controller 方法代码如下:**
public class TestController : Controller
{
// GET: Test
public ActionResult Index()
{
ViewBag.value = 100;
return View();
}
}
完美解决你的问题。