我使用存儲過程中的數據在我的視圖頁上生成了<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