C# 如何从JavaScript到homecontroller获取价值?

C# 如何从JavaScript到homecontroller获取价值?,c#,javascript,asp.net-mvc,C#,Javascript,Asp.net Mvc,我的项目中有一个计时器,当我停止它时,计时器值应该保存到数据库中,但我无法从JavaScript获取计时器值到homecontroller 我的JavaScript是: <script type="text/javascript"> document.getElementById("starttime").innerHTML = ((hour<=9) ? "0"+hour : hour) + " : " + ((min<=9) ? "0" + min : min) +

我的项目中有一个计时器,当我停止它时,计时器值应该保存到数据库中,但我无法从JavaScript获取计时器值到homecontroller

我的JavaScript是:

<script type="text/javascript">

document.getElementById("starttime").innerHTML = ((hour<=9) ? "0"+hour : hour) + " : " + ((min<=9) ? "0" + min : min) + " : " + sec;
.
.
.
.
.
</script> 

<script type="text/javascript">
         $(document).ready(function () {
             $("#End").click(function () {
                 $.ajax({ url: '/Home/SaveAnsDetails?classs=' + ($("#txtClass").val())
                  + '&ExamDate=' + ($("#ExamDate").val())
                    + '&ddd=' + ($("#starttime").val()),<!--timer value starttime is passed to ddd-->
                     type: "Post",
                     dataType: "json",

                     success: function (message) {
                         alert(message);
                     }
                 });
             });
         });

</script>

<div id="starttime" style="font-size:large; "></div>

document.getElementById(“starttime”).innerHTML=((小时)
类型:“Post”,
数据类型:“json”,
成功:功能(消息){
警报(信息);
}
});
});
});

你的ajax调用是错误的。查看位于的文档,特别是查找向服务器发送数据部分

$.ajax({
    url:
        '/Home/SaveAnsDetails?classs=' + ($("#txtClass").val())
        + '&ExamDate=' + ($("#ExamDate").val())
        + '&ddd=' + ($("#starttime").val()),<!--timer value starttime is passed to ddd-->
    type: "Post",
    dataType: "json",

    success: function (message) {
        alert(message);
    }
});
在控制器中,您需要指定
[HttpPost]
属性,以便能够区分
POST
请求和
GET
请求

您不会将模型传递给控制器。相反,您使用传递给它的数据在控制器内实例化模型类的对象。通过
POST
请求,您可以访问保存数据的
FormCollection
。将该方法与该方法结合使用,将值写入模型。控制器的外观如下所示:

[HttpPost]
public ActionResult SaveAnsDetails(FormCollection collection)
{
    var model = new ModelGridAllFeatures();
    TryUpdateModel(model, new string[]
    {
        "classs",
        "ExamDate",
        "ddd"
    }, collection.ToValueProvider());
}
您还可以将
POST
请求与
GET
请求相结合。您将向控制器传递另一个参数,并编辑ajax请求,以便在请求url中相应地使用该参数。

请尝试以下代码:

$(document).ready(function () {
         $("#End").click(function () {
             $.ajax({ url: '/Home/SaveAnsDetails',
              data: {'classs': $("#txtClass").val(),
                     'ExamDate': $("#ExamDate").val(),
                     'ddd':$("#starttime").text()
                    },
              type: "Post",
              dataType: "json",
              contentType:'application/json',
              success: function (message) {
                     alert(message);
                 }
             });
         });
     });
变化:

  • 若您需要它的post请求,那个么为什么要通过URL参数发送数据,而不是在正文中发送它呢
  • 如果需要“Json”,则还需要相应地指定“contentType”
  • “starttime”是div元素,要获得它的值,正确的方法是使用text()jquery方法

  • 我不确定这个参数“ModelGridAllFeatures model”,但是您是否相应地得到Examdate的值?我仍然无法得到timer(ddd)的值…我认为在显示timer值的地方出现了一些问题..+'&ddd='+($(“#starttime”).val())没有得到值..有什么想法吗。。。
    [HttpPost]
    public ActionResult SaveAnsDetails(FormCollection collection)
    {
        var model = new ModelGridAllFeatures();
        TryUpdateModel(model, new string[]
        {
            "classs",
            "ExamDate",
            "ddd"
        }, collection.ToValueProvider());
    }
    
    $(document).ready(function () {
             $("#End").click(function () {
                 $.ajax({ url: '/Home/SaveAnsDetails',
                  data: {'classs': $("#txtClass").val(),
                         'ExamDate': $("#ExamDate").val(),
                         'ddd':$("#starttime").text()
                        },
                  type: "Post",
                  dataType: "json",
                  contentType:'application/json',
                  success: function (message) {
                         alert(message);
                     }
                 });
             });
         });