【问题标题】:Asp.Net Mvc4 : How to use @ character in js file [duplicate]Asp.Net Mvc4:如何在js文件中使用@字符[重复]
【发布时间】:2014-03-13 11:59:17
【问题描述】:

我有一个 js 文件名为:myfile.js
它的内容是这样的:

function fnGetFilterVals(){
    var f = '?';
    f += '&fltInsertDate=' + $('#fltCreateDate').val();
    f += '&fltStatusID=' + $('#fltStatus').val();
    @if (ViewBag.GetCompanyID == -1)
    {
        <text>f += '&fltCompanyIDs=' + $('#fltCompany').val();</text>
    }
    return f;
}

我在BundleConfig.cs 中创建了一个包:

bundles.Add(new ScriptBundle("~/bundles/myfile").Include("~/static/asset/myfile.js"));

之后,我将其包含在内以查看“@section Scripts”:

@Scripts.Render("~/bundles/myfile")

由于我的文件包含 @ 字符,因此页面会引发“Uncaught SyntaxError: Unexpected token ILLEGAL”错误。

@if (ViewBag.GetCompanyID == -1)  

如何在单独的 js 文件中使用@ 字符?

【问题讨论】:

  • 制作代码块:@{ if (..) {...} }.

标签: c# javascript asp.net asp.net-mvc asp.net-mvc-4


【解决方案1】:

使用RazorJS 可以做到这一点,但这可能不是您想要的。捆绑包意味着它将压缩捆绑包中的所有 javascript 文件,并且在文件系统上更改之前不会再接触它们。这意味着您的 ViewBag 不会更新。

您应该只在单独的 javascript 文件中拥有库,并在视图中添加特定的函数调用,并使用正确的参数。您应该将视图中的ViewBag.GetCompanyID 作为fnGetFilterVals 函数的参数发送。

【讨论】:

  • RazorJS 将 js 文件包含到页面中。我也想压缩代码。我认为 RazorJS 不会压缩。
  • 我不知道细节,但不这么认为。尽管您需要为每个新请求呈现 js 文件,以便具有 if 条件的 ViewBag.CompanyID 属性是最新的。与简单的 javascript 参数相比,这绝不是有效的。
  • 好的。谢谢。我希望我能找到一种方法来做到这一点,但我认为没有。
猜你喜欢
  • 2013-05-03
  • 2012-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 2020-01-07
相关资源
最近更新 更多