2014-01-15 4 views
0

У меня есть проект 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); 
} 

Вот мой взгляд я сессия только, чтобы получить последние данные из контроллера и попытаться перезаписать значение модели.

@{ 
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> 
     } 
} 
+2

Почему вы используете сеанс? Если вы перенаправляете, просто создайте модель с обновленными данными для нового представления и отображения с помощью модели –

+0

. Что означает 'if (coveragedata.Proposal! = Null)' - он всегда будет ** быть нулевым (вы инициализируйте новый экземпляр покрытия каждый раз, когда вы вызываете метод!). И прекратите использовать сеанс! –

ответ

0

Я думаю, что ваша точка зрения не сильно типизированных. Вы должны добавить одну строку вверху страницы

@model CoverageViewModel.

+0

У меня есть, что сверху я не публиковал его здесь –

0

Я думаю, что это может работать:

Вы уже зацикливание список модель, так что вы можете использовать это:

@Html.Display(proposal.ProposalCode)

вместо этого:

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

Благодаря

Смежные вопросы