【问题标题】:View not displaying data passed by model视图不显示模型传递的数据
【发布时间】:2014-01-15 16:19:45
【问题描述】:

我有 MVC 4 项目,它应该为提案创建一组记录,然后在保存后应该将其重定向到某个页面,我将在其中显示所有记录。

这是我保存后的问题,它会重定向,但是从模型传递到视图的数据没有更新/视图上不显示。

这是我用于获取数据的控制器操作:

    private CoverageViewModel coveragedata = new CoverageViewModel();
    private NewProposalDBContext db = new NewProposalDBContext();
    //
    // GET: /Coverage/
    public ActionResult Index()
    {
        CoverageViewModel coverage = new CoverageViewModel();
        List<Institution> institutions = db.Institutions.ToList();

        if (coveragedata.Proposal != null)
        {
            coverage.Institution = institutions;
            coverage.Proposal = (List<NewProposal>)Session["coveragedata"];
        }
        else
        {
            List<NewProposal> listProposal = new List<NewProposal>();
            listProposal = db.NewProposal.ToList();
            List<LeadsManagement> listLeadsMgt = new List<LeadsManagement>();
            listLeadsMgt = db.LeadsManagements.ToList();
            List<LeadEmployees> listLeadsEmployees = new List<LeadEmployees>();
            listLeadsEmployees = db.LeadEmployees.ToList();
            List<VacsInAction> listVacsInAction = new List<VacsInAction>();
            listVacsInAction = db.VacsInActions.ToList();
            List<NewProposal> listofImplementedProposal = new List<NewProposal>();
            listofImplementedProposal = 
                       db.NewProposal.Where(x => x.Status.StatusID == 3).ToList();

            coverage.Institution = institutions;
            coverage.Proposal = listProposal;
            coverage.LeadsManagement = listLeadsMgt;
            coverage.LeadsEmployee = listLeadsEmployees;
            coverage.VacsInAction = listVacsInAction;
    }

    return View(coverage);
}

这是我的观点 我使用 session 只是为了从控制器获取最新数据并尝试覆盖模型的值。

@{
ViewBag.Title = "Index";

if(Session["coveragedata"] != null)
{
    Model.Proposal = (List<ULIV.ViewModels.NewProposal>)Session["coveragedata"];
}

if(Session["leadsMgt"] != null)
{
    Model.LeadsManagement = (List<ULIV.Models.LeadsManagement>)Session["leadsMgt"];
}

if(Session["leadsEmp"] != null)
{
    Model.LeadsEmployee = (List<ULIV.Models.LeadEmployees>)Session["leadsEmp"];
}

这是数据的实际显示:

@foreach (var proposal in Model.Proposal)
{
      if (proposal.Status.StatusID == 1)
      {
           <tr>
           <td align="center">
                    @Html.DisplayFor(modelItem => proposal.ProposalCode)
           </td>
           <td align="center">
                  @Html.DisplayFor(modelItem => proposal.VaccineType.VaccineTypeName)
           </td>
           <td align="center">
                  @Html.DisplayFor(modelItem => proposal.Product.ProductName) 
           </td>
           <td align="center">
                  @Html.DisplayFor(modelItem => proposal.ProposedUnitPrice)
           </td>
           <td align="center">
                  @Html.DisplayFor(modelItem => proposal.ProposedVolume)
           </td>
           <td align="center">
                  @Html.DisplayFor(modelItem => proposal.Status.StatusName)
           </td>
           </tr>
       }
}

【问题讨论】:

  • 为什么要使用会话?如果您正在重定向,只需为新视图创建一个包含更新数据的模型并使用该模型显示
  • if (coveragedata.Proposal != null) 的意义何在 - 它总是为空(每次调用该方法时都会初始化一个新的覆盖实例!)。并停止使用会话!

标签: asp.net-mvc asp.net-mvc-4 view ef-code-first


【解决方案1】:

我认为您的视图不是强类型视图。您应该在页面顶部添加一行 喜欢

@model CoverageViewModel.

【讨论】:

  • 上面有我没有在这里发布
【解决方案2】:

我认为这可能有效:

您已经在循环模型列表,因此您可以使用它:

@Html.Display(proposal.ProposalCode)

而不是这个:

 @Html.DisplayFor(modelItem => proposal.ProposalCode)

谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多