Asp.net MVC 2应用程序中的模型未更新

Asp.net MVC 2应用程序中的模型未更新,asp.net,asp.net-mvc-2,mvvm,Asp.net,Asp.net Mvc 2,Mvvm,我有一个时间表应用程序,它有一个视图,用户可以在其中选择客户和任务,并将它们添加到动态表中。此表包含用于填写工作小时数的任务和输入字段 为了在动态表中添加新任务,我使用jQuery,因此savenewtask按钮不是submit按钮。相反,我有一个适当的提交按钮,用于在填写时节省时间 该视图被强类型化为一个名为TimesheetViewModel的模型(见下文)。控制器将模型传递给视图,然后将输入字段绑定到模型中的属性 但是,当我使用submit按钮提交并尝试更新控制器中的模型时,它不会更新。从

我有一个时间表应用程序,它有一个视图,用户可以在其中选择客户和任务,并将它们添加到动态表中。此表包含用于填写工作小时数的任务和输入字段

为了在动态表中添加新任务,我使用jQuery,因此savenewtask按钮不是submit按钮。相反,我有一个适当的提交按钮,用于在填写时节省时间

该视图被强类型化为一个名为TimesheetViewModel的模型(见下文)。控制器将模型传递给视图,然后将输入字段绑定到模型中的属性

但是,当我使用submit按钮提交并尝试更新控制器中的模型时,它不会更新。从Nerddinner教程(我用它来学习MVC)中可以看出,应该使用使用UpdateModel()时绑定到的表单字段中的值来自动更新模型。但事实并非如此。我做错了什么

以下是所有相关代码:

视图:

ViewModel:

public class TimesheetViewModel
{
    private TimesheetContainer _model; //TimesheeContainer is an Entity Framework model

    public TimesheetViewModel()
    {
        _model = new TimesheetContainer();
    }

    public IList<Customer> Customers
    { get { return _model.Customers.ToList(); } }

    public IList<Task> Tasks
    { get { return _model.Tasks.ToList(); } }

    public IList<Task> WeekTasks
    {
        get
        {
            //Get the time segments for the current week
            DateTime firstDayOfWeek = DateTime.Parse("2010-12-05");
            DateTime lastDayOfWeek = DateTime.Parse("2010-12-13");

            List<TimeSegment> timeSegments = new List<TimeSegment>();
            foreach (var timeSegment in _model.TimeSegments)
            {
                if(timeSegment.DateTimeDate > firstDayOfWeek && timeSegment.DateTimeDate < lastDayOfWeek)
                    timeSegments.Add(timeSegment);
            }
            //Group into tasks
            var tasks = from timeSegment in timeSegments
                       group timeSegment by timeSegment.Task
                        into t
                      select new { Task = t.Key };
            return tasks.Select(t => t.Task).ToList();
        }
    }

    public IList<TimeSegment> TimeSegments
    { get { return _model.TimeSegments.ToList(); } }

    public void Save()
    {
        _model.SaveChanges();
    }


    public void AddTimeSegments(Task task)
    {
        _model.AddToTasks(task);
        _model.SaveChanges();
    }

}

为什么模型没有更新,我可以更改什么使其工作?

在您的第一个ActionResult索引()上设置一个断点,提交时是否会调用该断点?您可能需要[HttpGet],否则我认为它两者都可以。

您的模型是ado.net实体数据模型(edmx)吗?嗯,我从未见过它被称为ado.net实体数据模型,我称之为实体框架模型,但是的,它是edmx。
private TimesheetViewModel _model;

public TimesheetController()
{
    _model = new TimesheetViewModel();
}

public ActionResult Index()
{

    return View(_model);
}

[HttpPost]
public ActionResult Index(FormCollection collection)
{
    try
    {
        UpdateModel(_model);
        _model.Save();
        return View(_model);
        //return RedirectToAction("Index");
    }
    catch
    {
        return View();
    }
}
public class TimesheetViewModel
{
    private TimesheetContainer _model; //TimesheeContainer is an Entity Framework model

    public TimesheetViewModel()
    {
        _model = new TimesheetContainer();
    }

    public IList<Customer> Customers
    { get { return _model.Customers.ToList(); } }

    public IList<Task> Tasks
    { get { return _model.Tasks.ToList(); } }

    public IList<Task> WeekTasks
    {
        get
        {
            //Get the time segments for the current week
            DateTime firstDayOfWeek = DateTime.Parse("2010-12-05");
            DateTime lastDayOfWeek = DateTime.Parse("2010-12-13");

            List<TimeSegment> timeSegments = new List<TimeSegment>();
            foreach (var timeSegment in _model.TimeSegments)
            {
                if(timeSegment.DateTimeDate > firstDayOfWeek && timeSegment.DateTimeDate < lastDayOfWeek)
                    timeSegments.Add(timeSegment);
            }
            //Group into tasks
            var tasks = from timeSegment in timeSegments
                       group timeSegment by timeSegment.Task
                        into t
                      select new { Task = t.Key };
            return tasks.Select(t => t.Task).ToList();
        }
    }

    public IList<TimeSegment> TimeSegments
    { get { return _model.TimeSegments.ToList(); } }

    public void Save()
    {
        _model.SaveChanges();
    }


    public void AddTimeSegments(Task task)
    {
        _model.AddToTasks(task);
        _model.SaveChanges();
    }

}
public partial class TimeSegment
{
    public DateTime DateTimeDate
    { get { return DateTime.Parse(Date); } }
}