Javascript 如何在MVC ASP.NET中将值从视图传递到另一个控制器
我想将dropdownlist的选定索引传递给另一个控制器。 我使用java脚本获取dropdaownlist的索引。我拿到索引了 但我想在单击按钮时将该索引传递给另一个控制器 我该怎么做 这是我的Java脚本snnipetJavascript 如何在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:
$('#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();
}