我几天前问过一个问题,人们很乐意帮忙。 我的情况有所改变,我的代码也有。
我首先需要确定当前的文章组是否需要区别对待。如果是,则使用从数据库中检索的完整值来定义var“strbody”。如果它不是那些特殊文章组之一,那么在定义和显示它之前,我必须进行一些字符串操作来格式化检索到的值。
我的字符串操作代码就像它应该的那样工作,但是当我在代码块下面调用它时,我在if / then / else块中定义的strbody变量都没有被识别???
这是我的代码:
@{
string group = Model.ArticleGroupName;
if (group.Contains("Spacial Orientation")||group.Contains("Topography")||group.Contains("Osteology")||group.Contains("Angiology")||group.Contains("Neurology")||group.Contains("Myology")||group.Contains("Radiology")||group.Contains("Misc. Drawings")||group.Contains("Clinical Testing"))
{
var strbody = item.ShortBody;
}
else
{
string s = item.ShortBody;
string sLess = s.Remove(0, 12);
int index = sLess.IndexOf("Summary");
var strbody = (sLess.Substring(index + 8));
}
}
@strbody
这是错误:
\Plugins\FoxNetSoft.Articles\Views\ArticleRead\List.cshtml(76): error CS0103: The name 'strbody' does not exist in the current context
我不明白当我在任何可能的场景下定义var时,var是如何存在的......
我是新手,所以请毫不犹豫地惩罚我做蠢事......我需要学习!
更新
现在工作得很好。感谢所有帮助过的人!
以下是最终的工作代码:
@{
string strbody = item.ShortBody;
string group = Model.ArticleGroupName;
var thestrbody = " ";
if (group.Contains("Spacial Orientation")||group.Contains("Topography")||group.Contains("Osteology")||group.Contains("Angiology")||group.Contains("Neurology")||group.Contains("Myology")||group.Contains("Radiology")||group.Contains("Misc. Drawings")||group.Contains("Clinical Testing"))
{
thestrbody = strbody;
}
else
{
string s = item.ShortBody;
string sLess = s.Remove(0, 12);
int index = sLess.IndexOf("Summary");
thestrbody = (sLess.Substring(index + 8));
}
}
@thestrbody
答案 0 :(得分:5)
您在特定代码块中定义了它,并且该代码块中的范围仅为 。一旦关闭该块,变量就会超出范围。为了在该代码块之外使用它,您需要在之前声明它:
string strbody;
if(...)
{
// set the value of strbody
}
@strbody