Я пытаюсь перейти к представлению с указанным параметром batchId, обернутым во ViewModel, выбрать файл для загрузки, вернуть загруженный файл и сохранить данные файла со связанным значением 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");
}
Я попытался добавить AddCustomersViewModel в список параметров метода возврата HttpPost, но он всегда равен нулю.Я могу читать / анализировать загруженный файл просто отлично, просто не могу узнать, в какой BatchId он входил.
Кто-нибудь видит, что я делаю неправильно?
Спасибо