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; }