Sayfada ViewModel görüntüleyen bir Görünüm var. Kullanıcının daha sonra e-postayla gönderildiği bir CSV dosyası oluşturmak için bir düğmeye basmasına izin vermek istiyorum. POSt çalışmam var ancak ViewModel'ın geri gönderilmesi, sayfanın açıkça birçok satır göstermesine rağmen her zaman boştur.ViewBag ViewModel'i ViewBag ViewModel uygulamasına geri dön ViewSonic uygulamasında View Post yöntemi
Bu, söz konusu adlı bir parçasıdır:
public ActionResult SubmitExcel(List<ViewModels.AllRecognitionViewModel> AllRecognitions)
{
ViewBag.NoSearch = "block";
ViewBag.SupervisorSearch = "none";
ViewBag.DepartmentSearch = "none";
ViewBag.EmployeeSearch = "none";
DataTable dtAllRecognitions = Base.SQLHelper.ConvertListToDataTable(AllRecognitions.ToList());
DataSet dsAllRecognitions = new DataSet();
dsAllRecognitions.Tables.Add(dtAllRecognitions);
FHSBase.FHS.DataHelper.SendMeExcelFile(dsAllRecognitions, "Recognitions", CurrentUser);
ViewModels.AllRecognitionBigViewModel AllRecognitionBigViewModel = new ViewModels.AllRecognitionBigViewModel();
AllRecognitionBigViewModel.AllRecognitionViewModel = null;
Models.DateRange DateRange = new Models.DateRange();
DateRange.fromDate = DateTime.Today.Date;
DateRange.toDate = DateTime.Today.Date;
AllRecognitionBigViewModel.DateRange = DateRange;
ViewBag.AllRecognitionBigViewModel = AllRecognitionBigViewModel;
List<SelectListItem> empList = new List<SelectListItem>();
string VPath = "Index";
return View(VPath, empList);
}
"AllRecognitions" görünümü modeli ActionResult ancak ISN boştur:
<table style="width:99%" cellpadding="3" class="ContentTable" border="1" align="center">
@using (Html.BeginForm("SubmitExcel", "AllRecognition", new { AllRecognitions = ViewBag.AllRecognitionBigViewModel.AllRecognitionViewModel }, FormMethod.Post, new { id = "submitExcel" }))
{
<tr>
<td style="padding:3px;">
<input type="submit" name="BtnSubmitExcel" id="BtnSubmitExcel" value="Export to Excel" />
</td>
</tr>
}
<tr style="background-color:#5D7B9D;color:white;">
<th style="width:4%;padding:3px;font-size:12px;">Date</th>
<th style="width:8%;padding:3px;font-size:12px;">Employee</th>
<th style="width:8%;padding:3px;font-size:12px;">Recognized By</th>
<th style="width:6%;padding:3px;font-size:12px;">5-Star Standard</th>
<th style="width:70%;padding:3px;font-size:12px;">Description</th>
<th style="width:4%;padding:3px;font-size:12px;">Points</th>
</tr>
@{
if (ViewBag.AllRecognitionBigViewModel.AllRecognitionViewModel != null)
{
foreach (Recognition.ViewModels.AllRecognitionViewModel item in ViewBag.AllRecognitionBigViewModel.AllRecognitionViewModel)
{
@:<tr>
@:<td style="width:4%;padding:3px;font-size:12px;">@item.Date</td>
@:<td style="width:8%;padding:3px;font-size:12px;">@item.Employee</td>
@:<td style="width:8%;padding:3px;font-size:12px;">@item.RecognizedBy</td>
@:<td style="width:6%;padding:3px;font-size:12px;">@item.FiveStarStandard</td>
@:<td style="width:70%;padding:3px;font-size:12px;">@item.Description</td>
@:<td style="width:4%;padding:3px;font-size:12px;">@item.Points</td>
@:</tr>
}
}
}
</table>
Bu POST yöntemini alma kontrol tarafı Görünümün kendisinde boş değil. Geçerli görünüm modelini, Görünüm'de görülen mevcut değerlerle ActionResult'a (SubmitExcel) nasıl geri döndürebilirim?
AllRecognitions'larınız için TempData istersiniz. POST'unuz olduğunda orada olacak. İsterseniz ViewBag'ı render için kullanabilirsiniz, ancak form giriş elemanları ile eşleşmedikçe kaybolur. TempData hafızadaki gidiş gelişinden kurtulur ve forma bağlı değildir. –