0

我的详细信息视图中有一个 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);
    }                 

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

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

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

4

3 回答 3

2

Html.ActionLink()IHtmlString返回一个包含<a>标签的字符串(实际的 an )。

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

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

于 2012-10-24T13:33:14.420 回答
1

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

于 2012-10-24T13:34:48.200 回答
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需要“就地”输出的内容。

于 2012-10-24T13:37:00.740 回答