C# MVC5 实现HTML页面中引用的javaScript文件中的变量的初始化

一个控制器的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();
}
}
完美解决你的问题。