如何将位于视图中的Javascript值传递给C#方法

13 浏览
0 Comments

如何将位于视图中的Javascript值传递给C#方法

我正在使用ASP.NET MVC w/ Views。

这是一个两部分的问题。

我有一个返回数字数组的C#方法。然后将这些值发送到一个计算和创建随机数的javascript函数中。

我通过ViewData["Array"]将值从C#传递到javascript。

问题1:如何将javascript的值传递回C#方法?

问题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();
}
//从javascript函数返回的值
//保存在数据库中
public IActionResult SaveResult()
{
    RandomNumbTable rand = new RandomNumbTable();
    rand.Number = //javascript中的值;
    _context.Add(rand);
    _context.SaveChanges();
    return Ok();
}

.cshtml

0
0 Comments

问题的出现原因是用户想要将位于视图中的JavaScript值传递给C#方法。他们尝试使用$.ajax方法将值传递给C#的SaveResult方法,但他们不确定如何正确地传递值。

解决方法是使用以下代码将值传递给C#的SaveResult方法:

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

然后,在C#的控制器中,可以使用以下代码接收传递的值并进行处理:

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

通过这种方法,用户可以在任何地方调用calculateNumbers()方法,并根据需求在document.ready()中使用。这样,用户就可以将JavaScript值传递给C#方法了。

用户还提到他们想要将C#中的值传递给视图,但不想使用ViewData。他们可以在此链接中找到有关如何正确从控制器传递数据到视图的信息:[stackoverflow.com/questions/18608452](https://stackoverflow.com/questions/18608452)

希望以上内容能够帮助解决问题!

0