Asp.net mvc ASPNET MVC4 Facebook应用程序-FaceBookAuthorization筛选和发布数据

Asp.net mvc ASPNET MVC4 Facebook应用程序-FaceBookAuthorization筛选和发布数据,asp.net-mvc,facebook,asp.net-mvc-4,facebook-authorization,Asp.net Mvc,Facebook,Asp.net Mvc 4,Facebook Authorization,我刚刚创建了一个新的facebook应用程序,除了控制器操作(通过[FaceBookAuthorization]filter on action)处理我应用程序中的帖子外,所有操作都很好;因为它创建了一个重定向,我所有的表单数据都丢失了。如果修改本教程中提供的唯一表单,您可以看到我所说的内容: 如果我将表单的方法更改为post,则控制器中搜索方法中的参数将不再填充。我对此做了一些研究,似乎FaceBookAuthorization筛选器会创建重定向并丢失所有post数据。如何解决问题,还是我做错

我刚刚创建了一个新的facebook应用程序,除了控制器操作(通过[FaceBookAuthorization]filter on action)处理我应用程序中的帖子外,所有操作都很好;因为它创建了一个重定向,我所有的表单数据都丢失了。如果修改本教程中提供的唯一表单,您可以看到我所说的内容:

如果我将表单的方法更改为post,则控制器中搜索方法中的参数将不再填充。我对此做了一些研究,似乎FaceBookAuthorization筛选器会创建重定向并丢失所有post数据。如何解决问题,还是我做错了什么

行动如下:

[FacebookAuthorize]
    [HttpPost]
    public async Task<ActionResult> Search(string friendName, FacebookContext context)
    {
        return null;
    }

当我在其中放置断点时,我可以看到参数friendName为空。

我找到了答案。关键是添加一个名为signed_request的隐藏字段,并用request中相同的值填充它:

vm.signed_request=请求[signed_request]

为什么会这样?答案就在这里:

FacebookAuthorizeFilter检查该特定字段,并在字段未填充时进行重定向


我在这里进一步描述了它,并为此介绍了有用的Html助手:

我找到了答案。关键是添加一个名为signed_request的隐藏字段,并用request中相同的值填充它:

vm.signed_request=请求[signed_request]

为什么会这样?答案就在这里:

FacebookAuthorizeFilter检查该特定字段,并在字段未填充时进行重定向


我在这里进一步描述了它,并为此介绍了有用的Html帮助程序:

为什么您需要以d方式发布这篇文章?尽管您可能必须编写自己的模型绑定器并访问这些值,但如果您有一些特定的需求需要替换GETPOST@KD我需要张贴,因为我需要启用图像上传。这只是一个不起作用的例子。你为什么需要用d的方式写这篇文章?尽管您可能必须编写自己的模型绑定器并访问这些值,但如果您有一些特定的需求需要替换GETPOST@KD我需要张贴,因为我需要启用图像上传。这只是一个不起作用的例子。
[FacebookAuthorize]
    [HttpPost]
    public async Task<ActionResult> Search(string friendName, FacebookContext context)
    {
        return null;
    }