简体   繁体   English

ASP.NET MVC-部分视图中的Post操作返回空的ViewModel

[英]ASP.NET MVC - Post action in partial view returns a null ViewModel

I'm developping a website in ASP.NET MVC 4 and in one of my views, I've got 2 partial views : 我正在使用ASP.NET MVC 4开发网站,在我的一种观点中,我有2个部分观点:

<div id="timeDaysAndBeds">
    <div id="timeAndBeds">
        @Html.Action("TimeAndBedParameters")
    </div>

    <div id="daysOff">
        @Html.Action("DaysOff")
    </div>
</div>

My problem occurs in the second partial view. 我的问题出现在第二个局部视图中。 First, here's my GET method : 首先,这是我的GET方法:

    [HttpGet]
    public ActionResult DaysOff()
    {
        context = new SchedulingDataClassesDataContext();
        List<DBDayOfWeekOff> listDaysOff = (from doff in context.DBDayOfWeekOff select doff).ToList();

        DaysOffViewModel dovm = new DaysOffViewModel();

        string[] tableDays = new string[]
        {
            "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi","Dimanche"
        };

        List<DaysViewModel> listDays = new List<DaysViewModel>();

        for (int i = 1; i <= tableDays.Length; i++)
        {
            DaysViewModel dvm = new DaysViewModel()
            {
                DayId = i,
                DayName = tableDays[i - 1],
                IsOff = false
            };

            dovm.DaysOff.Add(dvm);
        }

        foreach (DBDayOfWeekOff dayOff in listDaysOff)
        {
            dovm.DaysOff.ElementAt(dayOff.DayOfWeekNumber - 1).IsOff = dayOff.IsOff;
        }

        return PartialView(dovm);
    }

And here's the View Models I'm using : 这是我正在使用的视图模型:

public class DaysViewModel
{
    public int DayId { get; set; }

    public string DayName { get; set; }

    public bool IsOff { get; set; }
}

public class DaysOffViewModel
{
    public List<DaysViewModel> DaysOff { get; set; }

    public DaysOffViewModel()
    {
        DaysOff = new List<DaysViewModel>();
    }
}

So, when I'm invoking my GET method, I'm getting my partial view eand everything seems to be okay. 因此,当我调用GET方法时,我得到了部分视图,一切似乎都还不错。 However, when I'm trying to call my POST method, I got an empty DaysOff list (count = 0). 但是,当我尝试调用POST方法时,我得到了一个空的DaysOff列表(计数= 0)。 Here's my View and my POST method : 这是我的View和我的POST方法:

@model AstellasSchedulerV2.Models.DaysOffViewModel

@using (Html.BeginForm("DaysOff", "Home", FormMethod.Post, new { dovm = Model }))
{
    <fieldset id="fsDaysOff">
        <legend>Jours de fermeture</legend>
        @foreach (AstellasSchedulerV2.Models.DaysViewModel dvm in Model.DaysOff)
        {
            <div class="editor-label">
                @dvm.DayName
            </div>
            <div class="editor-field">
                @Html.CheckBoxFor(d => dvm.IsOff)
            </div>
        }

        <input id="registerDayOffBtn" type="submit" name="Enregistrer" value="Enregistrer" />
    </fieldset>
}

And my POST mehtod : 和我的POST方法:

    [HttpPost]
    public ActionResult DaysOff(**DaysOffViewModel dovm**=> the List "DaysOff" has no item at all)
    {
        //some code
    }

As I said, in my POST mehtod gets a DaysOffViewModel which has an empty list. 如我所说,在我的POST方法中,有一个DaysOffViewModel,其中有一个空列表。 What could it be? 会是什么呢?

Instead for each loop use for loop like this: 对于每个循环,请使用如下所示的for循环:

@for (int i=0; i<Model.DaysOff.Count; i++)
{
  <div class="editor-label">
     @Model.DaysOff[i].DayName
  </div>
  <div class="editor-field">
  @Html.CheckBoxFor(d =>  Model.DaysOff[i].IsOff)
  </div>
 }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM