if / then / else C#中的变量挫折

时间:2013-12-04 21:10:23

标签: c# string variables contains

我几天前问过一个问题,人们很乐意帮忙。 我的情况有所改变,我的代码也有。

我首先需要确定当前的文章组是否需要区别对待。如果是,则使用从数据库中检索的完整值来定义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

1 个答案:

答案 0 :(得分:5)

您在特定代码块中定义了它,并且该代码块中的范围仅为 。一旦关闭该块,变量就会超出范围。为了在该代码块之外使用它,您需要在之前声明它:

string strbody;
if(...)
{
    // set the value of strbody
}
@strbody