【发布时间】:2018-12-08 10:09:24
【问题描述】:
我想将视图中下拉列表的选定索引传递给不同的控制器。 我使用 java 脚本来获取 dropdaownlist 的索引。我得到了索引。
但我想通过单击我的按钮将该索引传递给另一个控制器。
我该怎么做?
这是我的 Java 脚本片段
$('#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" />
这是我想要索引值的控制器
public ActionResult ViewSensorTable(int id)
{
return View();
}
编辑
$('#btnsubmit').click(function () {
var deviceid = $('#ddldevice option:selected').val();
$.ajax({
type: 'GET',
data: { id: deviceid },
url: '@Url.Action("ViewSensorTable","Home")',
success: function (result) {
}
});
【问题讨论】:
-
data: { id: deviceid }- 您发送到服务器的参数名称必须与服务器期望的参数名称匹配。否则它无法映射它。您也可以将$('#ddldevice option:selected').val();简化为$('#ddldevice').val();- jQuery 将自动获取所选选项的值。 -
@ADyson 我这样做了,我明白了,但现在又发生了一个错误。参数字典包含“CalReport.Controllers.HomeController”中方法“System.Web.Mvc.ActionResult ViewSensorTable(Int32)”的不可空类型“System.Int32”的参数“id”的空条目。可选参数必须是引用类型、可空类型或声明为可选参数。参数名称:参数
-
@NeelDarji 在您进行 AJAX 调用时检查
deviceid是什么。 -
@NeelDarji 我猜在这种情况下
deviceid为空,因此您向服务器发送一个空值。当然,在您的操作方法中,id不允许为空。在你的 JavaScript 中做一些简单的调试来检查发生了什么。 -
另一件不相关但有用的小事:
public ActionResult ViewSensorTable(int id) { return View(); }——你不应该在这里返回整个视图——这将返回所有内容,包括带有完整 HTML 标签、头部、正文等的布局页面。这在响应 AJAX 请求时没有帮助。您应该返回少量 HTML(通过 Partia lView),可以插入到浏览器中现有的完整页面中,或者返回一些 JavaScript 可以读取和处理的 JSON 数据。您可以很容易地在线找到这两种设计的示例和教程。
标签: javascript jquery asp.net asp.net-mvc model-view-controller