我正在开发一个ASP.NET MVC网站,该网站的表单允许使用表单标签上的multipart/form data enctype选项上传文件,如此
我怎么写这个来做一个ASP.NET MVC Ajax表单帖子呢?
这是可能的,但这是一个漫长的道路.第1步:写下您的表单
例如:
@using (Ajax.BeginForm(YourMethod, YourController, new { id= Model.Id }, new AjaxOptions {//needed options }, new { enctype = "multipart/form-data" })) { }
第2步:拦截请求并将其发送到服务器
第3步:因为您进行了ajax调用,所以您可能想要替换某些图像或其他内容 multipart/form-data
multipart/form-data
handleSuccessFunctionHERE(data) { $.ajax({ type: "GET", url: "/Profile/GetImageModified", data: {}, dataType: "text", success: function (MSG) { $("#imageUploaded").attr("src", "data:image/gif;base64,"+msg); }, error: function (msg) { alert(msg); } }); }
MSG变量是base64加密字符串.就我而言,它是图像的来源.
通过这种方式,我设法更改了个人资料图片,之后图片立即更新.另外请确保添加Application_Start(global.asax)非常 ValueProviderFactories.Factories.Add(new JsonValueProviderFactory()); 好吗?
ValueProviderFactories.Factories.Add(new JsonValueProviderFactory());
PS:此解决方案有效,请不要犹豫,询问更多细节.
我遇到了这个小黑客,很好地解决了这个问题
window.addEventListener("submit", function (e) { var form = e.target; if (form.getAttribute("enctype") === "multipart/form-data") { if (form.dataset.ajax) { e.preventDefault(); e.stopImmediatePropagation(); var xhr = new XMLHttpRequest(); xhr.open(form.method, form.action); xhr.onreadystatechange = function () { if (xhr.readyState == 4 && xhr.status == 200) { if (form.dataset.ajaxUpdate) { var updateTarget = document.querySelector(form.dataset.ajaxUpdate); if (updateTarget) { updateTarget.innerHTML = xhr.responseText; } } } }; xhr.send(new FormData(form)); } } }, true);
你可以使用一些额外的上传器(例如jQuery多文件上传器)(我更喜欢这种方式,我更喜欢不使用MS Ajax)
使用:
AjaxHelper.BeginForm("Post", "Entries", new {id=ViewData.Model.MemberDetermination.DeterminationMemberID}, new AjaxOptions(){/*some options*/}, new {enctype="multipart/form-data"})
但在第二种情况下,我不确定它会起作用.
在jQuery的形式插件支持文件上传这种方式.
我使用的代码可以正常工作!它是@James'Fluffy'Burton解决方案的副本。我只是即兴回答他的问题,以便对MVC陌生的人能够快速理解后果。
以下是我的观点:
@using (Ajax.BeginForm("FileUploader", null, new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "AjaxUpdatePanel" }, new { enctype = "multipart/form-data", id = "frmUploader" })){ } 小妖694_807 这个屌丝很懒,什么也没留下! 关注作者 Tags | 热门标签 actionscrip bash c# c++ c语言 erlang flutter go golang java javascript lua node.js perl php python scala typescript RankList | 热门文章 1Javascript正则表达式 2调整SwipeRefreshLayout的高度以将View放置在其底部 3我如何["字符串"]作为条件陈述? 4单击复选框时如何显示标记 5在jdbc连接中使用哪种设计模式? 6如何确定yocto中食谱的依赖性? 7自动完成参数powershell的值 8更改apache2服务器的ssl端口.(ERR_SSL_PROTOCOL_ERROR) 9Java无法读取代码的输出 10PyCharm当前的工作目录 11JS中的半结肠问题 12升级到angular2.0.0-beta.0后,router-link指令被破坏 13如何生成文件路径? 14Java中的getValue 15Redux:使用异步中间件与成功函数的调度操作 16我可以在不将结果绑定到let/match/for语句中的新变量的情况下构造元组吗? 17CodeIgniter Active Records比较同一个mysql表的两列 18Dapper.SimpleCRUD插入没有身份的问题 19弹性搜索-聚合按索引分组 20如何启用UITextView来接收粘贴的图像