0

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

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

1 回答 1

1

有一个带有返回字符串的动作的 MVC 控制器。

那是个问题。在 ASP.NET MVC 控制器操作返回 ActionResults,而不是字符串。这就是为什么 Html.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")
}

然后让为该视图提供服务的控制器操作简单地填充视图模型上的相应属性。

于 2013-06-21T12:18:24.903 回答