如何在asp.net,razor,mvc
中的视图中调用post actionresponse将所选下拉项作为参数传递给javascript基本上,我确信你可以从下面的代码中看出来,我正在努力完成上述工作但没有取得多大成功。我应该改变什么才能获得成功?感谢
<script type="text/javascript">
$(function() {
$("#mydropdown").change(function() {
var selectedItem = $(this).val();
$.ajax({
url: '@Url.Action("DoStuff", "MainController")',
type: "Post",
data: { name: selectedItem },
success: function () {
alert('success');
}
});
});
});
[HttpPost]
public ActionResult DoStuff(String Selecteditem)
{
CIModel CIModellList = CILHelper.ImportFunc(Selecteditem);
return View(CIModellList);
}
截至目前,下拉列表发生变化时没有任何反应。虽然如果我删除了ajax函数,并用警报替换它。然后出现这种情况下的警报。
此时,actionresult和控制器看起来好像它们在项目中不存在(红色),即使它们都按照规定进行命名。
c#似乎暗示操作或控制器实际上都不存在,给出错误“无法解决操作”或“无法解析控制器”
答案 0 :(得分:1)
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.9.1.js"></script>
<script src="//code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
</head>
<body>
<select id="mydropdown">
<option value="a">a</option>
<option value="b">b</option>
<option value="c">c</option>
<option value="d">d</option>
</select>
<script type="text/javascript">
$(function() {
$("#mydropdown").change(function() {
var selectedItem = $(this).val();
$.ajax({
url: '@Url.Action("DoStuff", "MainController")',
type: "Post",
data: { name: selectedItem },
success: function () {
alert('success');
}
});
});
});
</script>
</body>
</html>
[HttpPost]
public ActionResult DoStuff(string name)
{
CIModel CIModellList = CILHelper.ImportFunc(name);
return View(CIModellList);
}
答案 1 :(得分:0)
您必须将参数名称更改为SelectedItem,该名称与您的操作方法的参数匹配,并在传递之前对您的json数据进行字符串化,
JSON.stringify({ SelectedItem :selectedItem })
请参阅this以供参考。