Javascript 如何在MVC ASP.NET中将值从视图传递到另一个控制器

Javascript 如何在MVC ASP.NET中将值从视图传递到另一个控制器,javascript,jquery,asp.net,asp.net-mvc,model-view-controller,Javascript,Jquery,Asp.net,Asp.net Mvc,Model View Controller,我想将dropdownlist的选定索引传递给另一个控制器。 我使用java脚本获取dropdaownlist的索引。我拿到索引了 但我想在单击按钮时将该索引传递给另一个控制器 我该怎么做 这是我的Java脚本snnipet $('#btnsubmit').click(function () { var deviceid = $('#ddldevice option:selected').val(); $.ajax({ type:

我想将dropdownlist的选定索引传递给另一个控制器。 我使用java脚本获取dropdaownlist的索引。我拿到索引了

但我想在单击按钮时将该索引传递给另一个控制器

我该怎么做

这是我的Java脚本snnipet

  $('#btnsubmit').click(function () {

        var deviceid = $('#ddldevice option:selected').val();

        $.ajax({
            type: 'GET',
            data: { deviceid: deviceid },
            url: '@Url.Action("ViewSensorTable","Home")',
            success: function (result) {


            }

        });
我的按钮代码

 <input type="submit" id="btnsubmit" value="Next" class="btn btn-primary btn-sm" />
编辑

$('#btnsubmit').click(function () {

    var deviceid = $('#ddldevice option:selected').val();

    $.ajax({
        type: 'GET',
        data: { id: deviceid },
        url: '@Url.Action("ViewSensorTable","Home")',
        success: function (result) {


        }

    });

尝试将您的URL替换为

url: '@Url.Action("ViewSensorTable","Home")' + '/' + deviceid,
或者,如果您的操作是[HTTPPost],则需要进行更改

type: 'POST',

您需要通过ajax请求传递设备ID。另外,Action方法中的参数名称应该与使用ajax发送的参数匹配。请尝试以下代码:

查看

    <input type="submit" id="btnsubmit" value="Next" class="btn btn-primary btn-sm" />

    $('#btnsubmit').click(function () {

        var deviceid = $('#ddldevice option:selected').val();
        alert(deviceid);  //Comment it after testing

        $.ajax({
            type: 'GET',
            data: { id: deviceid },
            dataType: "json",
            url: '@Url.Action("ViewSensorTable","Home")',
            success: function (result) {
               //do something with the result
            }
        });
}

数据:{id:deviceid}
-发送到服务器的参数名称必须与服务器所需的参数名称匹配。否则它无法映射它。您还可以简化
$('#ddlddevice option:selected').val()
$('#ddlddevice').val()-jQuery将自动获取所选选项的值。@ADyson我这样做了,我得到了它,但现在又出现了一个错误。参数字典包含“CalReport.Controllers.HomeController”中方法“System.Web.Mvc.ActionResult ViewSensorTable(Int32)”的不可为空类型“System.Int32”的参数“id”的空条目。可选参数必须是引用类型、可为null的类型或声明为可选参数。参数名称:parameters@NeelDarji当您进行AJAX调用时,请检查
deviceid
是什么。@NeelDarji我猜在这种情况下,
deviceid
为空,因此您向服务器发送一个空值。当然,在您的操作方法中,
id
不允许为null。在JavaScript中进行一些简单的调试,以检查正在发生的情况。还有一件小事,不相关但很有用:
public ActionResult ViewSensorTable(int-id){return View();}
--您不应该在此处返回整个视图-这将返回所有内容,包括带有完整HTML标记的布局页面,head,这在响应AJAX请求时没有帮助。您应该返回少量HTML(通过Partia lView),这些HTML可以插入到浏览器中现有的完整页面中,或者返回一些JavaScript可以读取和处理的JSON数据。您可以很容易地在网上找到这两种设计的示例和教程。参数字典包含“CalReport.Controllers.HomeController”中方法“System.Web.Mvc.ActionResult ViewSensorTable(Int32)”的非空类型“System.Int32”的参数“id”的空条目。可选参数必须是引用类型、可为null的类型或声明为可选参数。参数名称:参数deviceid中是否有任何值?我不知道,我是MVC新手。@ADyson我在点击并试用时为deep objects添加了它作为通用解决方案。然而,如果只有一个值,您就很好地指出了混淆。我将删除它。出于测试目的,我要求将值发送为简单的“1”,以检查ajax调用是否正常工作。
    <input type="submit" id="btnsubmit" value="Next" class="btn btn-primary btn-sm" />

    $('#btnsubmit').click(function () {

        var deviceid = $('#ddldevice option:selected').val();
        alert(deviceid);  //Comment it after testing

        $.ajax({
            type: 'GET',
            data: { id: deviceid },
            dataType: "json",
            url: '@Url.Action("ViewSensorTable","Home")',
            success: function (result) {
               //do something with the result
            }
        });
}
[HttpGet]
public ActionResult ViewSensorTable(int id)
 {
     return View();
 }