【问题标题】:ASP .NET Core 2.2 MVC Pass parameter from js/html来自 js/html 的 ASP .NET Core 2.2 MVC 传递参数
【发布时间】:2021-01-25 17:07:12
【问题描述】:

我需要帮助。我在 .NET core 2.2 中有 MVC 应用程序。 我有一个表单视图,并且在 javascript 中有一个带有 onfocusout 事件的输入(输入文本)。

在这个 js 方法 onfocusout 中,我从另一个应用程序获取输入值并使用 c# 代码调用 API,并将结果设置为 ViewBag 或 ViewData,在 js 中我没有问题继续这个结果,但是当我调用API 我需要输入值,但我无法从输入或 js 方法中获取 c# 代码中的输入值。

有什么解决办法吗?

下面是代码示例:

.
.
.
<input type="text" id="input" onfocusout="OnFocusOut(this)" />

<script>

function OnFocusOut(input) {
        var value = input.value;
        @ViewBag.Value = value; //not work

        @{
                //C# code to call API, here I need input value
                @ViewBag.Result = result;
        }

        alert('@ViewBag.Result'); //no problem
}

</script>
.
.
.
.

【问题讨论】:

  • 请澄清您的问题。您不能将值设置回 ViewBag,因为它从任何地方的服务器中输出。如果你想用 ViewBag 设置 js 变量,你可以这样做... var myValue = '@ViewBag.Result';
  • 您可能误解了 ViewBag 的工作原理。您不能这样做。请更详细地分享您的要求,让我们考虑是否有其他解决方案。

标签: javascript c# asp.net-core


【解决方案1】:

您可能会误解 ViewBag 的工作原理。

当您的浏览器获取该页面时,您的ViewBag 基本上已经超出范围。这是因为您的 MVC 应用程序使用了ViewBag,但 Javascript 仅在 Web 浏览器文档中有一个作用域(这是应用程序在 ViewBag 超出作用域后返回给浏览器的 HTML 代码. Javascript 不是 MVC 应用程序的一部分,只是生成的网页。

为了更容易理解:

当应用程序运行时,假设您的ViewBag.Value 的值为“aa”,cshtml 文件中的代码如下:

function OnFocusOut(input) {
        var value = input.value;
        @ViewBag.Value = value; 
}

将被发送到浏览器:

function OnFocusOut(input) {
        var value = input.value;
        "aa" = value; 
}

由于您的浏览器只能看到最后一部分,因此它在 Javascript 中没有意义。在你的情况下,会导致语法错误。

【讨论】:

    猜你喜欢
    • 2023-01-30
    • 2021-02-21
    • 1970-01-01
    • 2020-01-21
    • 1970-01-01
    • 2019-07-31
    • 2019-09-29
    • 1970-01-01
    • 2021-10-05
    相关资源
    最近更新 更多