2016-11-08 4 views
0

У меня есть частичный вид, который содержит выпадающий список, который принимает значения из таблицы называется месяца, этот частичный вид, используемый в связи с именем пользователя PSRЗначение не может быть нулевым. Имя параметра: детали ошибка в MVC5

Я передал объект в контроллере:

public ActionResult PSR() 
    { 

     var PSRS = _context.PSRs.ToList(); 
     var months = _context.Months.ToList(); 

     var viewModel = new PSRViewModel 
     { 
      PSRs = PSRS, 
      Months = months 

     }; 
     return View(viewModel); 
    } 

внутри частичный вид:

@model Project.ViewModels.PSRViewModel 

<h5> Month </h5> 
<div class="form-group"> 
@Html.LabelFor(m => m.Month.month) 
@Html.DropDownListFor(m => m.Month.month, new SelectList(Model.Months, "Id",  "month"), "--Select Month--", new { @class = "form-control" }) 

</div> 

И этот вид изнутри PSR:

@model List<Project.ViewModels.PSRViewModel> 
@{ 
ViewBag.Title = "PSR"; 
Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

<div> 
@Html.Partial("~/Views/Doctors/_AddPSR.cshtml", new  Project.ViewModels.PSRViewModel()) </div> 

Итак, почему эта ошибка возникает при запуске представления PSR? даже при переходе объекта в этой точке зрения

Это код класса ViewModel:

namespace Project.ViewModels 
{ 
public class PSRViewModel 
{ 

    public PSR PSR { get; set; } 
    public List<PSR> PSRs { get; set; } 
    public Doctor Doctor { get; set; } 
    public List<Month> Months { get; set; } 
    public Month Month { get; set; } 
} 
} 

Должен ли я сделать это в контроллере?

var months = new List<Month> { 

}; 

UPDATE: месяц модель

namespace Project.Models 
{ 
public class Month 
{ 
    public int Id { get; set; } 
    public string month { get; set; } 
} 
} 
+0

что является PSRViewModel.Month.month? Можем ли мы определить определение этого класса? – Steve

+0

Да, я положил .. –

+0

Похоже, что вы хотите прокрутить свою модель, вызывая @ html.partial («VIEWNAME», model [i]) – Steve

ответ

0

Похоже, что ваша основная точка зрения неверна, если вы хотите просмотреть только одну модель PSRView, измените свой @model, а затем передайте его частичным позже.

Меняйте PSRView

@model Project.ViewModels.PSRViewModel 
@{ 
ViewBag.Title = "PSR"; 
Layout = "~/Views/Shared/_Layout.cshtml"; 
} 


<div> 
@Html.Partial("~/Views/Doctors/_AddPSR.cshtml", model) 

Для более одного PSRView

@model List<Project.ViewModels.PSRViewModel> 
@{ 
ViewBag.Title = "PSR"; 
Layout = "~/Views/Shared/_Layout.cshtml"; 
} 


<div> 
@foreach(PSRViewModel m in model){ 
    @Html.Partial("~/Views/Doctors/_AddPSR.cshtml", m) 
} 
+0

Спасибо большое! –

0

Может быть, это происходит потому, что, хотя вы создаете PSRViewModel не экземпляр списка месяцев. По умолчанию он будет инициализирован нулевым значением. Таким образом, вы могли бы просто сделать это:

public class PSRViewModel 
{ 
    public PSR PSR { get; set; } 
    public List<PSR> PSRs { get; set; } 
    public Doctor Doctor { get; set; } 
    public List<Month> Months { get; set; } = new List<Month>(); 
    public Month Month { get; set; } 
} 

Но, конечно, это не поможет, если вы хотите, чтобы загрузить данные из базы данных в этом списке

+0

Ошибка исчезла, но список пуст, как вы упомянули .. Хмм есть ли другой способ сделать это? .. thanks –

+1

Вы понимаете, что вызов @ Html.Partial в вашем представлении не вызывает метод контроллера? – Steve