【问题标题】:How to pass Javascript values located in Views to C# method如何将位于视图中的 Javascript 值传递给 C# 方法
【发布时间】:2020-01-05 04:45:57
【问题描述】:

我正在使用带有视图的 ASP.NET MVC。

这是一个两部分的问题。

我有一个返回数字数组的 C# 方法。然后将这些值发送到计算和创建随机数的 javascript 函数。 我将值从 C# 传递到 javascript 的方式是通过ViewData["Array"]

Question 1:如何将 javascript 值传递回 C# 方法?

Question 2:我怎样才能成功调用calculateNumbers() javascript函数自动将值发送回C#? 因此,对于它计算的每个数字,它会将值传递回 C# 方法,而无需使用按钮 onclick 调用它。

C#方法

      public ActionResult Index()
        {
            int[] num_array = { 10, 20, 30, 40, 50, 60, 70 };

            foreach (var numb in num_array)
            {
                ViewData["Array"] = numb;
            }

            return View();
        }

        //values returned from javascript function
        //is saved in db
        public IActionResult SaveResult()
        {
            RandomNumbTable rand = new RandomNumbTable();
            rand.Number = //value from javascript;
            _context.Add(rand);
            _context.SaveChanges();

            return Ok();
        }

.cshtml

<script>
  function calculateNumbers()
        {
            var value = @ViewData["Array"];

            if (value != undefined)
            {
                //random numbers between 1 and whatever value is
                var randomNumbers = Math.floor((Math.random() * value) + 1);

                //I want to grab this value and pass it to the C#
                //SaveResult() method
            }
        }
 </script>

【问题讨论】:

  • ViewData 不能用于 calculateNumbers 吗?
  • 是的,将值从 C# 传递到 Javascript 时,ViewData 工作正常。
  • 所以,value 等价于 { 10, 20, 30, 40, 50, 60, 70 }。 1和任何值之间的随机数是什么意思?数组的任何值?

标签: javascript c# asp.net-mvc view parameter-passing


【解决方案1】:

使用它来将值传递给 C# SaveResult 方法:

$.ajax({
            url: '/ControllerName/SaveResult',
            type: 'POST',
            data: {rn : randomNumbers}
        }).done(function (t) {
            //--
        });

和:

public IActionResult SaveResult(yourType rn)
        {
            RandomNumbTable rand = new RandomNumbTable();
            rand.Number = rn;
            _context.Add(rand);
            _context.SaveChanges();

            return Ok();
        }

您可以根据您的要求在任何地方调用 calculateNumbers(),例如 document.ready()。

【讨论】:

  • 非常感谢您的回复。它奏效了!我想知道如何使用 C# 模型将值从 C# 传递到 View。我使用过 ViewData,但这不是我想在我的项目中使用的东西。如有任何帮助,我将不胜感激!
  • 请勾选答案为正确答案。从 C# 传递值到查看这个链接可以帮助你:stackoverflow.com/questions/18608452/…
猜你喜欢
  • 1970-01-01
  • 2015-01-21
  • 2015-03-28
  • 1970-01-01
  • 2011-10-26
  • 1970-01-01
  • 2011-06-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多