我正在尝试通过ViewModel打包指定的batchId参数并进入一个视图,选择要上传的文件,获取已上传的文件并将文件数据与相关的BatchId值存储在数据库中。
当提交表单时,我不知道如何获取ViewModel和PostedFileBase以便获取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操作方法定义如下:
[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,但它总是为空。我可以很好地读取/解析上传的文件,只是无法获取它属于哪个BatchId。
有人看出我做错了什么吗?
谢谢