MVC 中的数据模板:- 如何从 C# 代码在 javascript 中定义常量

发布于 2024-10-21 16:21:28 字数 360 浏览 2 评论 0原文

他们是否存在类似数据模板之类的功能。我的项目有一个 js 文件,该文件使用我在母版页中链接它们来链接到所有页面。

我想定义一些常量,这些常量在名为 Globals 的 ac# 类中定义。我如何在我的项目中使用的 js 文件中配置或访问它们。

我需要一个东西,当代码加载到客户端系统上时,js 文件上的某个变量从 c# 类设置。

中编写的代码中定义它们

假设我在 Razor var name @glboals.appName

;但如果我在文件中定义它们,它们永远不会在视图中渲染时渲染它们。

当文件是独立的并且未嵌入视图中时,他们有什么方法可以在js文件中应用常量。

所以这个问题的任何解决方案

Are their any feature exist something like data template. i have a js file for my project who linked in all page using i linked them in master page.

I want to define their some constant who are define in a c# class called Globals. how i can configure or access them in my js file i used in my project.

i need a thing that when code is load on client system that some variable on the js file set from class c#.

suppose i define them in the code i write in Razor

var name @glboals.appName;

but if i define them in the file that they never render them as they render in the views.

so are their any way to applied constant in js file when file is standalone and not embedded in views.

so any sollution for this problem

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

み零 2024-10-28 16:21:28

像这样?

<html>    
    <!-- blah blah bla -->    
    <script>    
        var myFirstGlobalVar = '@Namespace.Class.Variable';    
    </script>    
</html>
...

顺便说一句,如果您说 MasterPage,然后用 @ 显示代码,我们只是不知道您在说什么,最好将版本作为标签提及。

MasterPages 适用于 WebForms 和 MVC 1 和 2,LayoutViews 适用于 MVC 3


如果您想将其放在静态文件中......好吧,它是一个静态文件,它不会得到处理,因此您将看到的只是您编写的确切代码。

要处理此类事情,您需要动态处理此文件,因此,让我们添加一个名为 DynamicScripts 的控制器和一个名为 JsVariables 的操作,并添加一个普通的 return View() ;

使用该视图作为您设置变量的纯 Javascript 文件,并且您可以传递任何模型

现在,在您的 global.asax 中创建一个新规则:

routes.MapRoute(
    "CustomJs", // Route name
    "Js/Variables", // URL with parameters
    new { controller = "DynamicScripts", action = "JsVariables", id = UrlParameter.Optional } // Parameter defaults
);

并在您的 在 HTML 中添加以下行即可:

<link href="@Url.Content("~/Js/Variables")" type="text/javascript" />

还有更多方法可以做到这一点,例如使用 RegisterStartUpScript,但是上面的技巧(尽管我将其用于 CSS 而不是JavaScript)是我最常用的。

Like this?

<html>    
    <!-- blah blah bla -->    
    <script>    
        var myFirstGlobalVar = '@Namespace.Class.Variable';    
    </script>    
</html>
...

BTW, if you say MasterPage and then you show code with @ we just don't know what are you talking about, it's a good thing to mention the version as a tag.

MasterPages are for WebForms and MVC 1 and 2, LayoutViews are for MVC 3


If you want to have this in a static file ... well, it's a static file, it does not get processed, so all you will see is the exact code you wrote.

To handle such things you need to process this file dynamically, so, lets add a Controller called DynamicScripts and an Action called JsVariables and add a normal return View();

use that view as a plain Javascript file that you set up variables, and you can pass any Model

Now, in your global.asaxcreate a new rule:

routes.MapRoute(
    "CustomJs", // Route name
    "Js/Variables", // URL with parameters
    new { controller = "DynamicScripts", action = "JsVariables", id = UrlParameter.Optional } // Parameter defaults
);

and in your html jus add the line:

<link href="@Url.Content("~/Js/Variables")" type="text/javascript" />

There are more ways to do this, like using the RegisterStartUpScript, but the trick above (though I use it for CSS and not JavaScript) is what I use the most.

还在原地等你 2024-10-28 16:21:28

您可以在主视图中定义这样的脚本,并在每个视图中使用配置:

<script type="text/javascript">
    var Config = {};
    Config.appName = '<%= glboals.appName %>';     
</script>

这是mvc2示例,您可以在razor中执行相同的操作。

You can define script like this in views master, and use config in each view:

<script type="text/javascript">
    var Config = {};
    Config.appName = '<%= glboals.appName %>';     
</script>

It's mvc2 example, you can do the same in razor.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文