我使用存储过程中的数据在我的视图页上生成了<select>
下拉菜单。使用JavaScript,我访问了选定的<option>
并将文本保存到变量中。现在我需要将该变量发回给我的控制器,以便我可以将它用作另一个存储过程中的参数。如何将我的视图中的变量传递给我的控制器?
这里是我的控制器,名为“EventsController.cs”
public ActionResult Dropdown(string text)
{
ViewData["ids"] = db.uspGetAllEventIds().ToArray();
Console.WriteLine(text);
return View();
}
所以你可以看到我跑第一的存储过程,并将其发送给视图。
这里是在视图中发生了什么:
@model IEnumerable<Heatmap.Models.Event>
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title></title>
<script>
function showValue()
{
var list = document.getElementById("EventId");
var text = list.options[list.selectedIndex].text;
alert(text);
}
</script>
</head>
<body>
<div>
@using (Html.BeginForm("", "", FormMethod.Post))
{
<select id="EventId">
@{
var ids = ViewData["ids"] as string[];
for (var i = 0; i < ids.Length; i++)
{
<option>@ids[i]</option>
}
}
</select>
<input name="text" type="submit" value="Submit" />
<button onclick="showValue()">Click me!</button>
}
</div>
</body>
</html>
所以现在我有这个提示功能只是为了证明自己,我有机会获得我选择option
。我很确定我需要使用FormMethod.Post
将其返回给控制器,但目前为止我还没有找到任何有用的参考。
如何格式化此变量以便我的变量text
被发送回控制器?
您的控制器的POST方法在哪里? – krillgar
@krillgar在发布之前我有一个单独的,但我删除它试图让我的问题更容易理解。它基本上只是一个'ActionResult'函数,我试着将数据传递给没有任何运气 –
而您如何设置Action方法则决定了如何将数据发送给它。 – krillgar