从控制器操作方法获取请求不起作用

时间:2014-02-20 12:32:01

标签: c# asp.net-mvc http

我有一个带有链接的视图,该链接可以触发get请求:

<span style="margin-right: 20px;">@Html.Hyperlink("http://localhost:59536" + pr.Url, pr.Name)</span>

<span style="margin-right: 20px;">@Html.ActionLink(pr.Name, "LoginExternal", new { url = pr.Url, state = pr.State })</span>

当我使用自定义html助手在视图中生成超链接时,一切正常。如果我使用第二个方法在控制器中调用action方法,则get request永远不会被释放:

    public async Task LoginExternal(string url, string state)
    {
        var client = new HttpClient { BaseAddress = new Uri(uri) };
        var response = await client.GetAsync(url);
        response.EnsureSuccessStatusCode();
    }

控制器操作方法中缺少什么

1 个答案:

答案 0 :(得分:2)

您似乎正在尝试使用Html.ActionLink生成指向Web API方法的链接。您可以使用Html.RouteLink并指定httproute=""值:

@Html.RouteLink(
    pr.Name, 
    "DefaultApi", 
    new { 
        httproute = "", 
        controller = "LoginExternal", 
        url = pr.Url, 
        state = pr.State
    }
)

如果DefaultApi不是您拥有的Web API路线,则可能需要调整路线名称。