簡體   English   中英

HTML表格未從ViewModel填充

[英]Html table not populating from ViewModel

我正在嘗試使用數據庫中表中的數據填充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; } 
}

做出了一個答案,從本質上講,視圖不知道要渲染什么,您需要傳遞實際的填充模型(在您的情況下,該視圖為IEnumerable)。 可以使用以下方法完成此操作:

View("Upload", viewModelList);

Controller.View MSDN上的文檔

看來您沒有在視圖模型中添加任何數據。 如果視圖模型是Test對象的集合,則需要向集合中添加一些Test對象。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM