1

我有一个DropDownList包含“站”代码。

@Html.DropDownList("Station", null, new { id = "dd_custom"});

由(SelectListItem 列表)DropDownList填充。ViewData["Station"]

我的目标很简单:当DropDownList CHANGES(粗体,因为我知道 onchange 存在,但不能使它工作。)时,我希望@ViewBag.CurrentStation等于所选电台。

我试过的:

  1. Javascript 通过本网站本网站许多其他网站。
  2. 阿贾克斯

尽管如此,我还是不知道如何使这个下拉列表与我的控制器(来自 MVC4 模板(Internet 应用程序)的基本控制器)进行交互。

最简单的方法是从我的 index.cshtml 到 HomeController.cs 进行交互,但我不知道如何。

有人可以帮忙吗?

谢谢


编辑:我需要所有页面的站代码。用户只能在主页上修改站,但我需要在其他页面上的站来生成报告。全局变量可能是答案,比如使用 Application["VarName"],但仍然不知道如何与我的 DropDownList => C# 类进行交互。

4

1 回答 1

4

您存储在ViewData,中的数据ViewBag仅针对一个请求存在。说前。如果您正在向服务器发出请求并将新值设置为@ViewBag.CurrentStation但下拉列表更改时,下一个请求将无法使用它,因为它已经消失了。

如果您想在下拉列表更改时调用某些控制器操作,您可以使用 jquery 通过 ajax 来执行此操作。

要将下拉列表的选定值提交到服务器,您可以参考此线程

如果您希望当前站为一个用户提供多个请求,那么您可以使用 session.

服务器端

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 });
});
于 2012-06-20T05:14:09.680 回答