使用 FormCollection

Posted

技术标签:

【中文标题】使用 FormCollection【英文标题】:using FormCollection 【发布时间】:2012-07-26 18:19:24 【问题描述】:

我目前正在向以下 .NET MVC 操作提交 json 请求

 [AcceptVerbs(HttpVerbs.Post)]
    public JsonResult Signup(FormCollection collection)
    

但是由于某种原因,该集合是空的。我知道数据正在发送,因为如果我将其更改为

[AcceptVerbs(HttpVerbs.Post)]
    public JsonResult Signup(String username, String email, String password)
    

我正在使用表单集合,因为它允许我为该方法提供可选参数。 将来我可能没有用户名我可能有名字(例如)但我不能让旧的网址中断

请求以 NSMutableURLRequest 的形式来自 ios 应用。 我是否遗漏了什么,或者我必须使用第二个选项并在添加新参数时创建不同的方法/在发布新应用程序更新时创建单独版本的 .NET MVC 应用程序。

是的,因为我正在发布这样的数据

NSMutableDictionary *sendData = [[NSMutableDictionary alloc] init];

        [sendData setValue:self.usernameTxt.text forKey:@"username"];
        [sendData setValue:self.emailTxt.text forKey:@"email"];
        [sendData setValue:self.deviceToken forKey:@"device_token"];

        //verify account details and retrieve the API Key
        responseData = [NSMutableData data];    

        NSString *stringUrl = kAppRequestUrl;

        NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:[stringUrl stringByAppendingString:@"/SomePath"]]];
        [request setValue:@"application/json; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
        [request setHTTPMethod:@"POST"];

        [request setHTTPBody: [sendData JSONData]];

【问题讨论】:

您究竟是如何将数据发布到控制器的?是FormFieldName=JsonObject的格式吗? 【参考方案1】:

FormCollection 表示您的Form 元素的集合。不要期望在其中接受 JSON 值。我会使用可选参数为您提供第二个选项(参数)。

[HttpPost]
public JsonResult Signup(String username="",string name="", String email, String password)

   //do stuff

【讨论】:

是的,所以我最终只是让我的所有参数都是可选的。否则我必须做类似***.com/questions/1571336/…

以上是关于使用 FormCollection的主要内容,如果未能解决你的问题,请参考以下文章

在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?

今目标使用教程 今目标任务使用篇

Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)

MySQL db 在按日期排序时使用“使用位置;使用临时;使用文件排序”

使用“使用严格”作为“使用强”的备份

Kettle java脚本组件的使用说明(简单使用升级使用)