ASP.Net MVC文件上传后期参数
发布时间:2020-12-16 06:53:49 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试使用包含在ViewModel中的特定batchId参数转到视图,选择要上载的文件,获取上载的文件并将文件数据与关联的BatchId值一起存储在数据库中. 提交表单时,我不知道如何取回viewmodel和PostedFileBase,以便我可以获取BatchId值. 我需要batchId值将它与我
我正在尝试使用包含在ViewModel中的特定batchId参数转到视图,选择要上载的文件,获取上载的文件并将文件数据与关联的BatchId值一起存储在数据库中.
提交表单时,我不知道如何取回viewmodel和PostedFileBase,以便我可以获取BatchId值. 我需要batchId值将它与我存储在数据库中的数据相关联. 我的控制器中有以下操作方法,允许通过文件上载和导入将新客户添加到指定的批处理: public ActionResult AddCustomers(int batchId) { var viewModel = new AddCustomersViewModel() { BatchId = batchId,//other view model properties }; return View(viewModel); } 我的视图是强类型的ViewModel: Inherits="System.Web.Mvc.ViewPage<TestExcelImport.Areas.Admin.ViewModels.AddCustomersViewModel> 并具有以下文件上传: <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> <h2>AddCustomers Batch ID : <%:Model.BatchId %></h2> <form action="/Admin/Dashboard/AddCustomers" enctype="multipart/form-data" method="post"> <input type="file" id="SourceFile" name="SourceFile" /> <br /> <input type="submit" value="Send" name="btnUpload" id="Submit1" /> </form> </asp:Content> 我的HttpPost Action方法定义为: [HttpPost] public ActionResult AddCustomers(HttpPostedFileBase SourceFile) { //int batchId = ??? HOW DO I Get the BatchId int fileLength = SourceFile.ContentLength; //works! // read through SourceFile.InputStream and store it in db //need the associated BatchID though return RedirectToAction("Index"); } 我已经尝试在HttpPost返回方法参数列表中添加AddCustomersViewModel但它始终为null.我可以很好地读取/解析上传的文件,只是无法找回它所属的BatchId. 有谁看到我做错了什么? 谢谢 解决方法
虽然有很多方法可以达到你想要的效果,但我会推荐以下内容(因为它是最简单的):
将您的操作方法签名更改为: public ActionResult AddCustomers(int BatchID,HttpPostedFileBase SourceFile) 并将渲染视图更改为: <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> <h2>AddCustomers Batch ID : <%:Model.BatchId %></h2> <form action="/Admin/Dashboard/AddCustomers" enctype="multipart/form-data" method="post"> <input type="hidden" value="<%: Model.BatchId %>" id="BatchID" name="BatchID" /> <input type="file" id="SourceFile" name="SourceFile" /> <br /> <input type="submit" value="Send" name="btnUpload" id="Submit1" /> </form> </asp:Content> 这可确保您的BatchId值与文件一起往返. 更高级的解决方案(如果这不符合您的需求)可能包括: >在表单发布到的URL中添加BatchId.>使用Session状态存储id. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 在ASP.Net中编写自定义NTLM质询/响应
- asp.net – 如何编辑web.config以停止提供.NET Web应用程序
- 将Funscript添加到现有的ASP.NET MVC项目中
- asp.net-core – Asp.net Core中的UserHostAddress
- asp.net-mvc – F#Asp.Net CodeDom ProviderOptions问题
- asp.net – BundleTransformer少抱怨“无法找到工厂,创建Ja
- asp.net-mvc-4 – 你必须调用“WebSecurity.InitializeData
- asp.net – Identity和自定义表之间的多对多关系. EF7 – 代
- asp.net-mvc – ASP.NET MVC和Ajax,并发请求?
- asp-classic – ASP Classic中的溢出