Asp.net MVC 2应用程序中的模型未更新
我有一个时间表应用程序,它有一个视图,用户可以在其中选择客户和任务,并将它们添加到动态表中。此表包含用于填写工作小时数的任务和输入字段 为了在动态表中添加新任务,我使用jQuery,因此savenewtask按钮不是submit按钮。相反,我有一个适当的提交按钮,用于在填写时节省时间 该视图被强类型化为一个名为TimesheetViewModel的模型(见下文)。控制器将模型传递给视图,然后将输入字段绑定到模型中的属性 但是,当我使用submit按钮提交并尝试更新控制器中的模型时,它不会更新。从Nerddinner教程(我用它来学习MVC)中可以看出,应该使用使用UpdateModel()时绑定到的表单字段中的值来自动更新模型。但事实并非如此。我做错了什么 以下是所有相关代码: 视图: ViewModel:Asp.net MVC 2应用程序中的模型未更新,asp.net,asp.net-mvc-2,mvvm,Asp.net,Asp.net Mvc 2,Mvvm,我有一个时间表应用程序,它有一个视图,用户可以在其中选择客户和任务,并将它们添加到动态表中。此表包含用于填写工作小时数的任务和输入字段 为了在动态表中添加新任务,我使用jQuery,因此savenewtask按钮不是submit按钮。相反,我有一个适当的提交按钮,用于在填写时节省时间 该视图被强类型化为一个名为TimesheetViewModel的模型(见下文)。控制器将模型传递给视图,然后将输入字段绑定到模型中的属性 但是,当我使用submit按钮提交并尝试更新控制器中的模型时,它不会更新。从
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); } }
}