1

我有一个 mvc 应用程序,它主要在客户端与 knockoutjs 一起工作。我需要为不同类型的安装配置它,因此我将为某些颜色设置自定义参数。现在我将所有内容都放在客户端的 js 文件中,但是因为这是在应用程序运行时不会改变的东西,所以我想把它放在服务器端并根据这些自定义参数修改我的视图,这样页面就可以了以正确的颜色呈现服务器端。

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

总是有人建议这样的事情:var somevar = "@item"item观点是什么?

4

4 回答 4

1

您可以将<appSettings> 部分添加到 web.config。在里面添加 <add key="" value="" />字符串。然后你可以在你的控制器中使用这样的值,如下所示:

ViewData["YourKey"] = ConfigurationManager.AppSettings["YourKey"].

最后,在views中写下类似的东西:

var value = @(ViewData["YourKey"])
于 2013-08-27T12:54:43.540 回答
1

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

ViewBag.msg="Hello!";

并在视图中获取它:

=@ViewBag.msg;
于 2013-08-27T12:14:27.467 回答
1

扩展其他答案,可以将此值注入您的客户端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>

如果您的 javascript 位于单独的 .js 文件中,则必须先从 .cshtml(或 .aspx)中获取变量,然后才能在 .js 文件中使用它。

要回答您关于item视图中的内容的问题:

在这种情况下,它是剃刀页面上的一个变量。如果视图是强类型的,它将在顶部定义一个模型,然后Model是一个可以在页面上使用的变量@Model。如果模型是某种集合,人们通常会遍历它并为集合中的每个项目输出一个项目,例如:

@foreach(var item in Model)
{
  <span>@item</span>
}

但该变量也可以即时创建,并根据需要使用,例如:

@{
    var item = "some string";
    var foo = "bar";
 }

然后在您的 javascript 中使用,如上所示:

<script type="text/javascript">
    var item = '@item';
</script>
于 2013-08-27T13:00:25.480 回答
1

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

您所指的 @ 通常是剃刀语法,表示后面是服务器端代码(或将在服务器上加载时执行的代码)。例如@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、Models 和 razor 语法的信息。

于 2013-08-27T13:26:36.213 回答