Asp.net mvc 使用服务器端参数自定义我的mvc应用程序

Asp.net mvc 使用服务器端参数自定义我的mvc应用程序,asp.net-mvc,asp.net-mvc-4,web-config,Asp.net Mvc,Asp.net Mvc 4,Web Config,我有一个mvc应用程序,主要在客户端使用knockoutjs。 我需要为不同类型的安装配置它,所以我会为一些颜色自定义参数,例如。 现在,我将所有内容都放在客户端的js文件中,但由于这是在应用程序运行时不会更改的内容,所以我想将其放在服务器端,并根据这些自定义参数修改我的视图,以便页面将仅以正确的颜色呈现在服务器端 使用MVC实现这一点的最佳方式是什么?我找到的所有答案都使用:ConfigurationManager.GetSection从web.config文件中读取,但不太清楚它是否在mvc

我有一个mvc应用程序,主要在客户端使用knockoutjs。 我需要为不同类型的安装配置它,所以我会为一些颜色自定义参数,例如。 现在,我将所有内容都放在客户端的js文件中,但由于这是在应用程序运行时不会更改的内容,所以我想将其放在服务器端,并根据这些自定义参数修改我的视图,以便页面将仅以正确的颜色呈现在服务器端

使用MVC实现这一点的最佳方式是什么?我找到的所有答案都使用:
ConfigurationManager.GetSection
从web.config文件中读取,但不太清楚它是否在mvc中工作,以及在此之后是否需要将值放入模型并将其附加到视图中


一直以来都有这样的建议:
var somevar=“@item”
但是视图中的
item
是什么?

您可以在控制器中设置一个变量,并在视图中使用它,如下所示:

ViewBag.msg="Hello!";
并将其显示在视图中:

=@ViewBag.msg;

您可以在控制器中设置变量,并在视图中使用它,如下所示:

ViewBag.msg="Hello!";
并将其显示在视图中:

=@ViewBag.msg;
您可以将
部分添加到web.config。在内部添加
字符串。然后,您可以在控制器中使用以下值:

ViewData[“YourKey”]=ConfigurationManager.AppSettings[“YourKey”]

最后,在视图中编写类似的内容:

var value = @(ViewData["YourKey"])
您可以将
部分添加到web.config。在内部添加
字符串。然后,您可以在控制器中使用以下值:

ViewData[“YourKey”]=ConfigurationManager.AppSettings[“YourKey”]

最后,在视图中编写类似的内容:

var value = @(ViewData["YourKey"])

扩展其他答案,可以将此值注入客户端javascript。如果JS位于CSHTML文件中,您只需执行以下操作:

//Controller Action
public ActionResult SomeAction()
{
    ViewBag.Color = "green"; // Get this from ConfigurationManager.AppSettings, database, or anywhere
    return View();
}

// on the view
<script type="text/javascript">
    var myColor = '@ViewBag.Color';
    // use myColor as any other jS variable
</script>
但变量也可以动态创建,并根据需要使用,如:

@{
    var item = "some string";
    var foo = "bar";
 }
然后在javascript中使用,如上图所示:

<script type="text/javascript">
    var item = '@item';
</script>

var item='@item';

展开其他答案,可以将此值注入客户端javascript。如果JS位于CSHTML文件中,您只需执行以下操作:

//Controller Action
public ActionResult SomeAction()
{
    ViewBag.Color = "green"; // Get this from ConfigurationManager.AppSettings, database, or anywhere
    return View();
}

// on the view
<script type="text/javascript">
    var myColor = '@ViewBag.Color';
    // use myColor as any other jS variable
</script>
但变量也可以动态创建,并根据需要使用,如:

@{
    var item = "some string";
    var foo = "bar";
 }
然后在javascript中使用,如上图所示:

<script type="text/javascript">
    var item = '@item';
</script>

var item='@item';

您有一些选择。可以使用ViewBag、ViewData或将其作为模型上的特性。我的首选是模型方法,因为它使视图和控制器之间的关系保持严格且定义良好

您所指的@通常是razor语法,表示后面是服务器端代码(或将在服务器上加载时执行的代码)。例如,@Model是模型,@item是名为item的服务器端变量。当设置采用lambda(model=>model.Description)的web元素时,您还将使用Html帮助程序,其中Description是模型的属性

因此,您可以做一些非常酷的事情,比如将JavaScript变量设置为在服务器上计算的值

var temperature = 0; //javascript
temperature  = @temperatureCalculation; //@temperatureCalculation is a C# variable that holds the result of a temperature calculation that is done on the server.

关于ViewBags、ViewData、模型和razor语法有很多信息

你有一些选择。可以使用ViewBag、ViewData或将其作为模型上的特性。我的首选是模型方法,因为它使视图和控制器之间的关系保持严格且定义良好

您所指的@通常是razor语法,表示后面是服务器端代码(或将在服务器上加载时执行的代码)。例如,@Model是模型,@item是名为item的服务器端变量。当设置采用lambda(model=>model.Description)的web元素时,您还将使用Html帮助程序,其中Description是模型的属性

因此,您可以做一些非常酷的事情,比如将JavaScript变量设置为在服务器上计算的值

var temperature = 0; //javascript
temperature  = @temperatureCalculation; //@temperatureCalculation is a C# variable that holds the result of a temperature calculation that is done on the server.

关于ViewBags、ViewData、模型和razor语法有很多信息

那么,对于自定义变量,VieBag或VievData,什么更好呢?@MaurizioIndenmark Check out-它们基本相同,但ViewBag是一个expando,它允许您使用属性表示法而不是字符串键表示法(即“魔术字符串”),那么对于自定义变量,什么更好呢,VieBag或VievData?@MaurizioIndenmark Check out-它们基本相同,但ViewBag是一个expando,它允许您使用属性表示法而不是字符串键表示法(即“魔术字符串”),温度计算可以在返回该视图的控制器操作中进行吗?它可以,虽然我只是在控制器上使用静态方法时才这样做。我想你可以把控制器作为模型的一员。不过,最好先在控制器中进行计算,然后将结果放入model/ViewBag/ViewData。否则,计算可能在模型中或视图本身中。temperatureCalculation是否可以在返回该视图的控制器操作中进行?可以,尽管我只在控制器上使用静态方法的情况下进行了计算。我想你可以把控制器作为模型的一员。不过,最好先在控制器中进行计算,然后将结果放入model/ViewBag/ViewData。否则,计算可能在模型中或视图本身中。