2012-08-29 60 views
1

我对剃刀相当陌生,通过它来完成我对底层c#代码所做的一些更改,并且我遇到了一个问题。剃刀中可变范围的问题

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

我到目前为止有:

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''

我可以重新盟友在这里使用一些帮助,谢谢。

+2

你的第一个样品应该工作。您的视图中可能存在其他一些问题,所以剃须刀认为您的变量未被声明。你能发布你的完整视图还是上传到某个地方? – nemesv

+0

“// Stuff”评论背后隐藏着什么?像@ helper之类的东西?因为它应该可以正常工作...... –

+0

它主要是一堆html标记,还有一些其他代码片段,我会在几分钟内填入填入的东西部分进行编辑,然后将其格式化为更多一般情况。 – Sconibulus

回答

6

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

+1

啊,谢谢,我没有意识到第一个被认为是一个特例。我认为把它放在使用它的代码附近会更好的风格。 – Sconibulus

+0

很高兴帮助:) – JTMon