无法访问条件Razor变量作为href

时间:2015-06-09 19:13:56

标签: c# asp.net-mvc razor

我有一个剃刀视图,根据模型返回的一些项目生成一个URL。当我创建一个没有任何if语句的url变量时,可以找到url变量并将其用作href。但是,当我有这个代码(使用if语句)时,它说:“名称'url'在当前上下文中不存在”。我怎样才能做到这一点?

       @{
    if(@Model.RootPageName != null)
    {     
         var abstractPage = Content.GetPage<AbstractPage>(@Model.RootPageName);
         var url = GenerateUrl(abstractPage);
    }
    else
    {
        var url = @Model.ButtonUrl;

    }
 }

<a href="@url" class="small button">@Model.ButtonText</a>

3 个答案:

答案 0 :(得分:3)

只需移动url即可在if范围之外访问:

 @{
    string url;
    if(@Model.RootPageName != null)
    {     
         var abstractPage = Content.GetPage<AbstractPage>(@Model.RootPageName);
         url = GenerateUrl(abstractPage);
    }
    else
    {
         url = @Model.ButtonUrl;

    }
 }

答案 1 :(得分:2)

如果声明嵌套在If / else语句中的变量,则不会为其余代码声明变量。

你有:

if(...)
{
   var url = "foobar";
 }

需要:

string url;
if(...)"
{
 url = "foobar";
}

答案 2 :(得分:1)

尝试在&#34之外声明var url;如果&#34;如果你在里面宣称它的生活范围是否在&#34;如果&#34;或&#34;否则&#34;