asp.net-mvc – ASP.NET MVC.如何创建接受和multipart / form-da
发布时间:2020-12-16 04:28:34 所属栏目:asp.Net 来源:网络整理
导读:我有一个Controller方法,需要接受客户端发送的多部分/表单数据作为POST请求.表单数据有2个部分.一个是序列化为application / json的对象,另一个是作为application / octet-stream发送的照片文件.我的控制器上有一个方法,如下所示: [AcceptVerbs(HttpVerbs.P
我有一个Controller方法,需要接受客户端发送的多部分/表单数据作为POST请求.表单数据有2个部分.一个是序列化为application / json的对象,另一个是作为application / octet-stream发送的照片文件.我的控制器上有一个方法,如下所示:
[AcceptVerbs(HttpVerbs.Post)] void ActionResult Photos(PostItem post) { } 我可以在这里通过Request.File获取文件没有问题.但是PostItem为null. 控制器代码: /// <summary> /// FeedsController /// </summary> public class FeedsController : FeedsBaseController { [AcceptVerbs(HttpVerbs.Post)] public ActionResult Photos(FeedItem feedItem) { //Here the feedItem is always null. However Request.Files[0] gives me the file I need var processor = new ActivityFeedsProcessor(); processor.ProcessFeed(feedItem,Request.Files[0]); SetResponseCode(System.Net.HttpStatusCode.OK); return new EmptyResult(); } } 电线上的客户端请求如下所示: {User Agent stuff} Content-Type: multipart/form-data; boundary=8cdb3c15d07d36a --8cdb3c15d07d36a Content-Disposition: form-data; name="feedItem" Content-Type: text/xml {"UserId":1234567,"GroupId":123456,"PostType":"photos","PublishTo":"store","CreatedTime":"2011-03-19 03:22:39Z"} --8cdb3c15d07d36a Content-Disposition: file; filename="testFile.txt" ContentType: application/octet-stream {bytes here. Removed for brevity} --8cdb3c15d07d36a-- 解决方法
FeedItem类是什么样的?对于我在帖子信息中看到的内容,它应该类似于:
public class FeedItem { public int UserId { get; set; } public int GroupId { get; set; } public string PublishTo { get; set; } public string PostType { get; set; } public DateTime CreatedTime { get; set; } } 否则它将不受约束.您可以尝试更改操作签名,看看是否有效: [HttpPost] //AcceptVerbs(HttpVerbs.Post) is a thing of "the olden days" public ActionResult Photos(int UserId,int GroupId,string PublishTo string PostType,DateTime CreatedTime) { // do some work here } 您甚至可以尝试在操作中添加HttpPostedFileBase参数: [HttpPost] public ActionResult Photos(int UserId,DateTime CreatedTime,HttpPostedFileBase file) { // the last param eliminates the need for Request.Files[0] var processor = new ActivityFeedsProcessor(); processor.ProcessFeed(feedItem,file); } 如果你真的感觉疯狂和顽皮,请将HttpPostedFileBase添加到FeedItem: public class FeedItem { public int UserId { get; set; } public int GroupId { get; set; } public string PublishTo { get; set; } public string PostType { get; set; } public DateTime CreatedTime { get; set; } public HttpPostedFileBase File { get; set; } } 最后一段代码片段可能就是您想要的结果,但逐步细分可能对您有所帮助. 这个答案也可以帮助你朝着正确的方向前进:ASP.NET MVC passing Model *together* with files back to controller (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – scriptresource.axd 404错误在asp net 4应用程序
- 分享一个asp.net pager分页控件
- asp.net-mvc-2 – 将参数传递给MVC Ajax.ActionLink
- asp.net – 为什么我应该使用N层方法当使用SqlDatasource时
- asp.net-mvc – Sitecore在我的MVC解决方案中提供了一个空白
- asp.net – 剃刀视图引擎自动应用报价?
- entity-framework-core – 实体框架Core 2.0许多表中公共属
- 如何使用ASP.NET授权允许访问.css文件?
- asp.net – 视图状态中存储的项目的生命周期是多少?
- ASP.NET 5中的全局异常处理
推荐文章
站长推荐
- asp.net – 在会话中存储值是否安全?
- asp.net-mvc – mvc3 maxLength输入
- asp.net-mvc – ASP.NET MVC 3多个模型到单个表单
- asp-classic – 如何在Classic ASP中延迟响应
- 从ASP.NET MVC Partial View中调用JavaScript
- asp.net-mvc – 如何让HTML DropDownListFor回发
- asp.net – 通过<%on .aspx页面绑定
- asp.net核心 – 如何在ASP.NET vNext MVC中实现会
- 使用WPF实现的 喜马拉雅FM 资源下载工具
- asp.net – Ninject程序集与引用的程序集不匹配
热点阅读