2011-03-16 28 views
2

我有以下類:Model.IsValid永遠是假的,當我插入日期時間

public class Post 
{ 
    [DataType(DataType.Date, ErrorMessage="Please fill in a valid date.")] 
    [RegularExpression(@"^\d{1,2}\/\d{1,2}\/\d{4}$", ErrorMessage="Fill in a valid date.")] 
    public DateTime? PublishDate { get; set; } 
} 

,在我的編輯操作我有這樣的

[HttpPost] 
public ActionResult Edit(Post post) 
{ 
    if (ModelState.IsValid) 
    { 
     return RedirectToAction("Index"); 
    } 
    else 
    { 
     return View(post); 
    } 
} 

但我的ModelState總是無效。怎麼來的?我該如何解決這個問題?

我也在這裏發佈:http://forums.asp.net/t/1663783.aspx/1?MVC3+how+to+check+datetime+on+model+with+unobtrusive+javascript+

更新:我發現有通過確實是一個錯誤:

ModelState.Values.Select(x => x.Errors); 

但我怎麼能找出它是如何到達那裏?更重要的是,我該如何解決它?

+1

您是否檢查過ModelState中的Errors集合? – Robert 2011-03-16 12:57:46

+0

我在哪裏可以找到?如果我鍵入ModelState.Errors它不會提供給我這樣的東西。 – 2011-03-16 13:12:38

+0

在'if(ModelState.IsValid)'上設置斷點,然後用調試器檢查ModelState對象。您應該能夠在ViewData字典中看不到關聯條目的錯誤消息... – 2011-03-16 13:17:15

回答

1

您的正則表達式不適用於您輸入的日期。我只是將其刪除,因爲如果日期不能被模型聯編程序解析,DateTime結構將不會被分配。

相關問題