我有一个DropDownList
,其中包含" Station"码。
@Html.DropDownList("Station", null, new { id = "dd_custom"});
DropDownList
由ViewData["Station"]
填充(SelectListItem列表)。
我的目标很简单:当DropDownList
更改时(以粗体显示,因为我知道onchange存在,但无法使其正常工作。),我希望@ViewBag.CurrentStation
为等于所选的电台。
我尝试过的事情:
但是,我无法弄清楚如何让这个下拉列表与我的Controller(MVC4模板(Internet Application)中的基本控制器)进行交互。
最简单的方法是从我的index.cshtml到HomeController.cs进行交互,但我无法弄清楚如何。
有人可以帮忙吗?
由于
编辑:我需要所有网页的电台代码。用户只能修改主页上的工作站,但我需要在另一页上使用工作站来生成报告。全局变量可能是答案,比如使用Application [" VarName"],但仍然不知道如何与我的DropDownList =>进行交互。 C#Class。
答案 0 :(得分:4)
您存储在ViewData
,ViewBag
中的数据仅存在一个请求。说对于前。如果您向服务器发出请求并将新值设置为@ViewBag.CurrentStation
,则下拉列表会更改,但下一个请求将无法使用,因为它已消失。
如果你想在下拉列表更改时调用某些控制器操作,你可以使用jquery通过ajax来实现。
要将选定的下拉列表值提交给服务器,您可以参考此thread。
如果您希望为用户保留多个请求的当前电台,则可以使用会话。
服务器端强>
public class StationController: Controller
{
public ActionResult SaveCurrentStation(int stationId)
{
Session["CurrentStation"] = stationId;
return new EmptyResult();
}
}
<强>客户端强>
$("#dropdownId").change(function(){
var selStationId = $(this).val();
$.post("/Station/SaveCurrentStation", {stationId: selStationId });
});