Asp.net mvc 3 更新控制器中的modelobject

Asp.net mvc 3 更新控制器中的modelobject,asp.net-mvc-3,c#-4.0,asp.net-mvc-controller,Asp.net Mvc 3,C# 4.0,Asp.net Mvc Controller,我正在尝试更新模型对象中的用户 public ActionResult AddJob(JobQueue job,HttpPostedFileBase file) { job.User = "itdev"; TryUpdateModel(job) if (ModelState.IsValid)//Always returns false { } } 模型 分配值后,我尝试使用TryUpdateMo

我正在尝试更新模型对象中的用户

   public ActionResult AddJob(JobQueue job,HttpPostedFileBase file)
    {
       job.User = "itdev";

       TryUpdateModel(job) 

       if (ModelState.IsValid)//Always returns false
       {

       }
    }
模型

分配值后,我尝试使用TryUpdateModel(作业)和UpdateModel(作业)。这两个值似乎都没有更新模型,因为ModelState.IsValid返回false。有人能给我指出正确的方向吗?我使用的是MVC3

谢谢


Sab

我可能错了,但我认为
job.User=“itdev”
应该足以在不使用
TryUpdateModel(作业)
的情况下更新模型,这就是我们在网站上的方式。我从来不需要使用任何方法来实际更新模型本身。只是手动赋值

我想这取决于你的模型是如何设置的


如果我的回答没有帮助,你可能应该发布模型的代码。

用户的类型是字符串吗?否则,正在分配的字符串将无效。你能给我们看一下你的用户类吗?是的,用户是JobQueue类中的一个字符串。我们的想法是使用User.Identity.Name从控制器分配用户,但我现在正在对其进行硬编码以进行测试。下一步似乎是尝试Gaz Winter下面建议的方法,并删除
TryUpdateModel(job)
as,在这种情况下,这似乎没有必要。如果ModelState.IsValid说它无效,那么我们需要进一步调查。是的,我会这样认为。赋值后,作业对象确实包含值,但ModelState.IsValid返回false。我的模型类中的用户字符串是[Required][Display(Name=“User”)]public string User{get;set;}调试时,是否填充了所有模型字段?如果有任何遗漏,则将导致其无效!当调试器点击第一行时,所需的数据用户不会被填充;在此之后,作业对象包含所需的值。我可以通过执行ModelState[“User”]来解决此问题。Errors.Clear();但不确定这是否是一种正确的方法。如果您总是要在控制器内部而不是从网页分配值。我不确定您是否需要必填字段。所以你可以把它们一起去掉。
   public class JobQueue { 
   [Required] 
   [Display(Name="JobId")] 
   public string JobId { get; set; } 

   [Required] [Display(Name = "FileName")] 
   public string FileName { get; set; } 

   [Required] 
   [Display(Name = "Job Run Date")] 
   public DateTime JobRunDate { get; set; } 

   [Required] 
   [Display(Name = "Email")] 
   public string Mail { get; set; } 

   [Required] 
   [Display(Name = "User")] 
   public string User { get; set; }