从MVC中的另一个操作获取操作链接文本

时间:2013-06-21 12:15:25

标签: asp.net-mvc-4 razor

我有一个MVC控制器,其动作返回一个字符串。我希望我的Action链接将此返回的字符串作为名称。在我看来,任何人都可以建议如何做到这一点吗?我在我的视图中编写了标记代码,我认为可以做到这一点,但我想我错了。

@if (Request.IsAuthenticated)
{
string returnedstr = @Html.Action("_MessagePartial", "UserMessage");
@Html.ActionLink(returnedstr, "Index", "UserMessage")
}

1 个答案:

答案 0 :(得分:1)

有一个MVC控制器,其动作返回一个字符串。

这是一个问题。在ASP.NET MVC控制器操作中,返回ActionResults,而不是字符串。这就是为什么Html.Action助手不会按照你的想法做到的。

  

我希望我的Action链接将此返回的字符串作为名称。

您可以使用自定义帮助程序而不是将返回所需字符串的控制器操作:

public static class Helpers
{
    public static string GetName(this HtmlHelper html)
    {
        // do something and ...
        return "some name";
    }
}

并在您看来:

@if (Request.IsAuthenticated)
{
    @Html.ActionLink(Html.GetName(), "Index", "UserMessage")
}

或者只是在视图模型上将其设为属性:

@if (Request.IsAuthenticated)
{
    @Html.ActionLink(Model.SomeName, "Index", "UserMessage")
}

然后让服务于此视图的控制器操作只是填充视图模型上的相应属性。