没有从ViewModel填充的Html表

本文关键字:Html 填充 ViewModel | 更新日期: 2023-09-27 18:05:44

我试图填充一个HTML表与数据从表在我的数据库。问题很简单,HTML表没有填充任何数据。

这是ViewModel:

    public class TestViewModel
{
    public string MatchedId { get; set; }
    public string UnmatchedId { get; set; }
    public string Auth { get; set; }
    public DateTime CreditDate { get; set; }
    public string CreditNumber { get; set; }
    public decimal CreditAmount { get; set; }
    public DateTime DeniedDate { get; set; }
    public int DeniedReasonId { get; set; }
    public string DeniedNotes { get; set; }
}
控制器动作:

   [HttpPost]
public ActionResult UploadValidationTable(HttpPostedFileBase csvFile)
{
    var inputFileDescription = new CsvFileDescription
    {
        SeparatorChar = ',',
        FirstLineHasColumnNames = true
    };
    var cc = new CsvContext();
    var filePath = uploadFile(csvFile.InputStream);
    var model = cc.Read<Credit>(filePath, inputFileDescription);
    try
    {
        var entity = new Entities();
//model here is the .csv, doesn't have anything to do with this issue
        foreach (var item in model)
        {
            var tc = new TemporaryCsvUpload
            {
                Id = item.Id,
                CreditAmount = item.CreditAmount,
                CreditDate = item.CreditDate,
                CreditNumber = item.CreditNumber,
                DeniedDate = item.DeniedDate,
                DeniedReasonId = item.DeniedReasonId,
                DeniedNotes = item.DeniedNotes
            };
            entity.TemporaryCsvUploads.Add(tc);
        }
        entity.SaveChanges();
        System.IO.File.Delete(filePath);
//This is where the database table is getting filled
 entity.Database.ExecuteSqlCommand("Insert into CsvReport Select  p.Id as MatchedId, case when p.Id is null then t.Id end as UnmatchedId, p.Auth,p.CreditDate, p.CreditNumber,p.CreditAmount, p.DeniedDate,p.DeniedReasonId, p.DeniedNotes from TemporaryCsvUpload t left join PermanentTable p on p.Id = t.Id;");

        TempData["Success"] = "Updated Successfully";
    }
    catch (LINQtoCSVException)
    {
        TempData["Error"] = "Upload Error: Ensure you have the correct header fields and that the file is of .csv format.";
    }
    return View("Upload");
}

视图:

@model IEnumerable<TestProject.TestViewModel>
                        @if (Model != null)
                    {
                        foreach (var item in Model.Where(x => x.IdMatched != null))
                        {
                            <tr>
                                <td>
                                    @item.MatchedId
                                </td>
                                <td>
                                    @item.Auth
                                </td>
                                <td>
                                    @item.CreditDate
                                </td>
                                <td>
                                    @item.CreditNumber
                                </td>
                                <td>
                                    @item.CreditAmount
                                </td>
                                <td>
                                    @item.DeniedDate
                                </td>
                                <td>
                                    @item.DeniedReasonId
                                </td>
                                <td>
                                    @item.DeniedNotes
                                </td>
                            </tr>
                        }
                    }
这有点奇怪,因为我正在用SQL命令填充数据库。我遗漏了什么?我需要尝试通过控制器动作传递它吗?如果你需要更多的信息,请告诉我。谢谢!

编辑

我试图通过实例,但我可能仍然做得不正确:

         var testModel = new TestViewModel();
         return View("Upload", testModel);

下面是它的内边距:

    public class TestViewModel
{
    public IEnumerable<Test> Test { get; set; } 
}

没有从ViewModel填充的Html表

做了一个回答,所以基本上视图不知道要渲染什么,你需要传递一个实际填充的模型(在你的情况下,一个IEnumerable视图)。可以使用以下方法:

View("Upload", viewModelList);

控制器。在MSDN上查看文档

看起来您没有向视图模型添加任何数据。如果视图模型是Test对象的集合,则需要添加一些测试对象到集合。

var model = new TestViewModel()
{
    Test = new List<Test>() { new Test(), new Test(), ... }
}
return View("Upload", model);