从另一个控制器中的控制器获取数据

时间:2012-03-28 14:41:07

标签: c# asp.net-mvc asp.net-mvc-3

我正在尝试在mvc中构建一个通用的导出操作。所以我为此写了一个控制器。

[AcceptVerbs(HttpVerbs.Post)]
public string Excel(FormCollection collection)
{
    string dataUrl = collection["dataUrl"];
    string filter = collection["filter"];
    //Get data from dataUrl
    ...
}

我的问题是我希望通过 POST 将相同参数传递给其方法来从另一个控制器传输数据。

这是数据的示例方法

[AcceptVerbs(HttpVerbs.Post)]
public JsonResult List(FormCollection collection)
{
    ...
    return Json(data);
}

提前致谢。

2 个答案:

答案 0 :(得分:1)

为什么不将导出代码重构为实用程序类,然后从两个控制器中使用它?

答案 1 :(得分:0)

假设您必须将控制器调用到控制器,您可以像这样使用HttpWebRequest:

public void CallController()
    {
        var request = (HttpWebRequest)WebRequest.Create("http://yoursite.com/Excel");
        request.Method = "POST";

        using (var dataStream = request.GetRequestStream())
        {
            //write your data to the data stream
            using (var response = (HttpWebResponse)request.GetResponse())
            {
                if (response.StatusCode == HttpStatusCode.OK || response.StatusCode == HttpStatusCode.TemporaryRedirect)
                {
                    //work with the controller response
                }
            }
        }
    }

如果您可以将代码重构为两个控制器外部的类,则效率非常低。