为什么这个链接不会呈现?

时间:2012-10-24 13:32:11

标签: razor asp.net-mvc-4

我的详细信息视图中有if / else语句,如下所示:

 @if (Model.SomeProperty != null)
    {
        Html.RenderAction("MethodName", "ContollerName", new {id=stuff});
    }
    else
    { 
        <span>Is this showing?</span>
        Html.ActionLink("Link Text", "MethodName", "ContollerName", new { Id = something}, null);
    }                 

span渲染,所以我知道else块被击中,但是ActionLink没有出现。但是,如果我将它移出像这样的else块,它可以工作:

@Html.ActionLink("Link Text", "MethodName", "ContollerName", new { Id = something}, null)

我猜我的语法有问题,但我没有看到它。

3 个答案:

答案 0 :(得分:2)

Html.ActionLink()会返回包含IHtmlString标记的字符串(实际为<a>)。

你没有对该字符串做任何事情。

您需要通过编写@Html.ActionLink(...)将字符串打印到页面。 (你仍然可以在代码块中执行此操作)

答案 1 :(得分:1)

答案在于@!只需添加它。

答案 2 :(得分:1)

应该是:

@if (Model.SomeProperty != null)
{
    Html.RenderAction("MethodName", "ContollerName", new {id=stuff});
}
else
{
    <span>Is this showing?</span>
    @Html.ActionLink("Link Text", "MethodName", "ContollerName", new { Id = something}, null);
}

Html.RenderAction直接使用流,因此它不需要它,但Html.ActionLink返回MvcHtmlString,需要在“就地”输出。