【问题标题】:Passing an array from Controller to View将数组从控制器传递到视图
【发布时间】:2018-10-29 21:04:21
【问题描述】:

我正在尝试做世界上最简单的事情,但这让我沮丧地把头撞在墙上。我只需要将一个简单的字符串数组从我的 Controller 类中的 C# 方法传递到我的索引视图中的 javascript 代码。就是这样。只需传递一个简单的数组。但是,该死的,如果我能弄清楚我在互联网上看到的任何令人费解的答案,或者对任何令人费解的答案有任何意义。

以下是详细信息(简化):

我的控制器:

public class BobsController : Controller
{
    // GET: Bobs
    public ActionResult Index()
    {
        return View();
    }

    public ActionResult ReturnBobsStuff()
    {
    List<string> myList = new List<string> { "element1", "element2", 
                                             "element3", "element4", 
                                             "element5", 
                                           };
    string[] myArray = myList.ToArray();
    return View(myArray);
    }
 }

我的看法:

<script>
    $(function () {
            var JavascriptArray = ??;
          });
</script>

??显然是问题所在。

【问题讨论】:

  • 您需要学习如何使用 jquery 或其他框架进行 ajax 调用。它本质上是异步的,因此您还需要学习如何使用 Promise(或者如果您决定使用 rxjs,则使用可观察的)。通常您使用 web-api 来公开服务器端端点(不是 mvc)。
  • 我知道如何进行 ajax 调用,但是如何将 Ajax 调用的数组 out 放入我可以在我的 javascript 中使用的变量中?这不可能那么复杂。这是一个简单的数组。我认为 MVC 的全部意义在于让控制器中的 c# 代码与视图中的 javascript 代码轻松混合。而且不能在两者之间传递简单的字符串数组??
  • 把变量放在viewbag中...然后在你的视图中??也就是说,将其序列化为 JSON,以便将其作为文字注入 JS。你不需要让它成为你模型的一部分,除非它会被用在一些 Razor 或其他东西中
  • 问题重复this topic

标签: c# asp.net-mvc razor


【解决方案1】:

在你的控制器中试试这个:

 public ActionResult ReturnBobsStuff()
{
List<string> myList = new List<string> { "element1", "element2", 
                                         "element3", "element4", 
                                         "element5", 
                                       };
ViewBag.MyVariable = myList.ToArray();
return View();
}

那么在你看来:

 <script> var myJsVariable = 'ViewBag.MyVariable' </script>

但我建议您尝试其他有效的方法,例如使用 AJAX 调用。

【讨论】:

    猜你喜欢
    • 2018-06-11
    • 2011-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多