【问题标题】:How do I set Razor variabele in Javascript?如何在 Javascript 中设置 Razor 变量?
【发布时间】:2019-09-18 04:05:15
【问题描述】:

我正在使用来自我的控制器的数据设置 Razor 变量,如下所示:

@{
    var filterData = ((ShipmentController)this.ViewContext.Controller).GetNoCmrs(new List<int>() { 1 });
}

我想根据用户选择的选项(在选择范围内)更改此数据。

<script>
    var x;
    function loadShipmentsByCondition() {
        x = document.getElementById("conditionSelect").value;
        if (x === "CMR not received") {
            @filterData = @newData;
        } else if(x === "Not invoiced") {
            console.log("INVOICE");
            @filterData = @otherData;
        }
    }
</script>

这可能吗?或者如果没有,我怎样才能有效地做到这一点? 我使用 MVC ASP.NET 和 vue js 作为前端。

谢谢

【问题讨论】:

  • 不能在客户端设置@filterData
  • 您可以随时向您的控制器/处理程序发回一个发布请求以设置此值

标签: c# asp.net vue.js razor model-view-controller


【解决方案1】:

很遗憾,您无法让 JavaScript 更改后端 C# 代码的值,因为 JavaScript 一旦在前端呈现,就对服务器上的 C# 代码一无所知。

但是,您可以在 JavaScript 变量离开服务器之前为其分配 C# 值。这样做只是将@filterData的值注入脚本中的html页面,然后在运行时分配给实际JS环境中的真实JavaScript变量:

<script>
    var x;
    var filterData = @filterData;
    var otherData = @otherData;
    var newData = @newData;

    function loadShipmentsByCondition() {
        x = document.getElementById("conditionSelect").value;
        if (x === "CMR not received") {
            filterData = newData;
        } else if(x === "Not invoiced") {
            console.log("INVOICE");
            filterData = otherData;
        }
    }
</script>

因此,您实际上是将这些 C# 变量转换为 JavaScript 变量,但如果您确实需要更改 C# 变量,那么您将不得不对服务器进行回发或 AJAX 调用。

【讨论】:

  • 这对我帮助很大!不知道。谢谢!
猜你喜欢
  • 1970-01-01
  • 2013-01-29
  • 1970-01-01
  • 2014-06-20
  • 1970-01-01
  • 1970-01-01
  • 2018-09-12
  • 2011-03-18
相关资源
最近更新 更多