【问题标题】:<select> for <select> c# to javascript<select> for <select> c# to javascript
【发布时间】:2017-09-27 15:10:34
【问题描述】:

我有一个 ViewBag.List > 我有比赛,每场比赛都有一个团队列表。 示例:{Premier League 列表:[Arsenal、Chelsea 等] 德甲:[拜仁慕尼黑、沃尔夫斯堡等]

我有 2 个选择。当用户选择第一个选择(比赛)时,我希望第二个选择将有来自比赛的团队。如果他选择英超联赛,第二选择将有阿森纳、切尔西等。

我尝试为每场比赛选择一个,如果他选择了一个,那一个将是可见的,而另一个隐藏或没有,但是所有的选择都与 asp-for 字符串 CurrentTeam 链接,我不能放数据库中的团队。

另一个选项是使用 javascript 函数。 每当用户选择比赛 -> onclick = "myfunction(this)" 在那个函数中我有这样的东西:

    function myFunction(select) {
        var sel = document.getElementById("teams");
        if (select.value == 'Premier League') {
            sel.innerHTML = "";

            @foreach(var team in ViewBag.List[0])   // Premier League
            {
            @: var x = document.createElement("OPTION");
            @: x.setAttribute("value", @team);
            @:var t = document.createTextNode(@team);
            @: x.appendChild(t)
            @: sel.appendChild(x);
                }
        }
        else // the other competitions

但我不能在 javascript 函数中使用 ViewBag。

我只想要一个对另一个选择做出反应的选择并将这两个东西放入数据库中。 有什么建议 ? 谢谢!

【问题讨论】:

  • 我希望使用 HTML 帮助程序来呈现框或从 Web 服务中提取数据。像这样编写代码不是最简单的方法,也不是最好的方法。你用的是什么底层系统 MVC5?
  • 我正在使用 ASP.Net Core MVC。我只有几个联赛(5 个),所以我可以手动输入,但是每个联赛都有 20 多支球队,我从数据库中取出这些球队并将它们从控制器中放入 ViewBag.List 中。..

标签: javascript c# jquery asp.net razor


【解决方案1】:

在您的视图中,您可以构建一个包含所有联赛和球队的 JavaScript 对象,然后在您的 JavaScript 代码中读取该对象:

控制器:

[HttpGet]
public ActionResult Index()
{
    ViewBag.List = new Dictionary<string, string[]>
    {
        { "Premier League", new[] { "Arsenal", "Chelsea" } },
        { "Bundesliga",     new[] { "Bayern Munchen", "Wolfsburg" } },
    };

    return View();
}

查看:

...
<script type="text/javascript">

    //Complete list of leagues and their teams:
    var leagues = {
        @foreach(var l in ViewBag.List)
        {
            @: '@l.Key': [
                    foreach(var team in ViewBag.List[l.Key])
                    {
                        @: '@team',
                    }
            @:  ],
        }
    };
    ...

示例:

https://dotnetfiddle.net/d0FrGr

【讨论】:

  • 非常感谢,真的很有帮助。现在可以了。我不知道为什么我的 Viewbag.List 在 javascript 函数中是空的。
  • 是的,ViewBag 仅在服务器上可用,在您构建 html(或其他响应)时,在控制器和视图中,然后将其发送回客户端。这是一个可以澄清事情的概述:ASP.NET MVC 5 Application lifecycle
猜你喜欢
  • 2019-02-05
  • 1970-01-01
  • 2022-12-27
  • 1970-01-01
  • 2018-01-01
  • 1970-01-01
  • 2012-06-27
  • 2011-06-28
  • 2012-11-15
相关资源
最近更新 更多