ASP MVC 4,将数据从javascript(视图)传递到C#静态方法

ASP MVC 4,将数据从javascript(视图)传递到C#静态方法,javascript,asp.net-mvc,client-side,server-side,Javascript,Asp.net Mvc,Client Side,Server Side,我正在开发一个视频应用程序,我想使用视频播放器API(Flowplayer)跟踪用户的行为。 我通过在每个事件上设置一个事件监听器来使用javascript处理“播放、暂停、恢复等”事件。捕获事件后,我调用服务器端的一个静态方法,以便将操作写入数据库(并对用户隐藏跟踪信息) 这就是我现在得到的: JS代码: <script type="text/javascript"> // bind listeners to all players on the page flowplayer(f

我正在开发一个视频应用程序,我想使用视频播放器API(Flowplayer)跟踪用户的行为。 我通过在每个事件上设置一个事件监听器来使用javascript处理“播放、暂停、恢复等”事件。捕获事件后,我调用服务器端的一个静态方法,以便将操作写入数据库(并对用户隐藏跟踪信息)

这就是我现在得到的:

JS代码:

<script type="text/javascript">
// bind listeners to all players on the page
flowplayer(function (api, root) {
    api.bind("pause", function () {
        console.info("pause", api.paused);

        var timePassed = api.video.time;
        @{
            Reporter.ReportPause(timePassed);
        }
        //... more code  ...

</script>
public static void ReportPause ( string timePassed)
{
    // do something with timePassed
}
我遇到一个异常:“无法解析符号‘timePassed’”

如何以正确/优雅的方式(以最小的开销)完成此任务

谢谢大家,, YNWA


//将侦听器绑定到页面上的所有播放机
flowplayer(函数(api,根){
api.bind(“暂停”,函数(){
控制台信息(“暂停”,api暂停);
var timePassed=$.flowplayer().getTime();
$.ajax({
url:“/Home/ReportPause”,
键入:“POST”,
数据类型:“json”,
数据:{timePassed:timePassed},
错误:函数(a,b,c){onError(a,b,c,parameters);},
成功:函数(数据){onSuccess(数据,参数);}
});
});
}
//控制器
公共类家庭控制器{
public JsonResult ReportPause(字符串时间传递)
{
TimePassedClass.ReportPause(timePassed);
//更多代码
}
}
公共静态类TimePassedClass
{
公共静态void ReportPause(字符串timePassed)
{
//你的逻辑
}
}

no,就是no。您需要了解razor引擎是如何工作的。C#代码是在编译时解析的(编译razor页面,而不是编译项目)。您不能在其中使用javascript,javascript是在页面运行时执行的(客户端)您无法从客户端的javascript设置服务器端变量的值。请进行ajax调用以调用您的服务器端函数。我尝试了ajax,但不知道在Url部分中放置什么,因为类和方法是静态的。您好,Jitendra,我想如果您使用一些像signar这样的东西。我知道与本次讨论不太相关,但我认为可能值得一提。谢谢:)(您应该返回一个JsonResult对象)自己做一些努力:P
<script type="text/javascript">
        // bind listeners to all players on the page
        flowplayer(function (api, root) {
            api.bind("pause", function () {
                console.info("pause", api.paused);

                var timePassed = $.flowplayer().getTime();
                    $.ajax({
        url: '/Home/ReportPause',
        type: 'POST',
        dataType: "json",
        data: { timePassed: timePassed },
        error: function (a, b, c) { onError(a, b, c, parameters); },
        success: function (data) { onSuccess(data, parameters); }
    });
                });
            }
    </script>


// Controller
public class HomeController{
    public JsonResult ReportPause(string timePassed)
    {
         TimePassedClass.ReportPause(timePassed);
         // more code
    }
}
public static class TimePassedClass
{
      public static void ReportPause(string timePassed)
       {
          // your logic
       }
}