3

我对 razor 还很陌生,为了完成我对底层 c# 代码所做的一些更改,我有点糊涂,我遇到了一个问题。

我需要在底层对象上使用设置属性来获取正确的配置文件以从中提取图像位置。我正在尝试将硬编码的图像更改为可配置的图像。

到目前为止我所拥有的:

else
{
@{ 
     var prefix = Model.GetNameSpaceFromSettings();
     var configImgs = ChartColors.GetImgs(prefix);
}
<div style='float:left;'>
<img src='@Url.Content(Model.ComparisonChart(300, 250, false))' border='0' alt=''/>   
<p></p> 
<table width='295' cellpadding='2' cellspacing='1' border='0' class='summarygridtablebackground' align="left">                       
<tr class='summarygridbackground'>
<td>
<div style="float:left; width:125px;"><img src='@configImgs.MyImg' border='0'></div>//This is where I'm working
</td>
</tr>
//a few more rows where I'm trying to eventually do the same thing
</table>
</div>
}

这不起作用,消息“当前上下文中不存在名称'configImgs'”。

我在另一个问题中读到,范围问题的常见解决方案是将变量放入 @functions 部分,所以我尝试了,它最终看起来像这样:

else
{
@functions{ 
      string prefix = Model.GetNameSpaceFromSettings();
      Images configImgs = ChartColors.GetImgs(prefix);
}

这个失败并显示一条消息对,“非静态字段、方法或属性'System.Web.Mvx.WebViewPage.Model.get 需要一个对象”(我也尝试用'this'引用它,并且它说 'this' 在当前上下文中不可用)和“字段初始化程序无法引用非静态字段、方法或属性 'ASP.Myfile.prefix'”

我真的可以在这里使用一些帮助,谢谢。

4

1 回答 1

13

尝试在第一个 @{} 块内声明变量。然后,您将能够在视图中的任何位置使用该变量。

于 2012-08-29T19:39:10.653 回答