2010-04-09 71 views
1

剛剛開始使用.NET和MVC(1)。我遇到了一個問題,其中在我的添加操作中,出於某種原因輸入的日期以1/1/0001結束,而不是輸入的內容,從而導致日期溢出。ASP.NET MVC發佈日期字段爲1/1/0001

在我的模型中,此字段(「已添加」)屬於datetime類型,不允許爲空值。

在我的控制,我有:

public ActionResult Add() 
    { 
     Instance instance = new Instance() 
     { 
      Added = DateTime.Now, 
      Active = true 
     }; 

     return View(instance); 
    } 

    [AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult Add(Instance instance) 
    { 

     if (ModelState.IsValid) 
     { 
      try 
      { 
       System.Diagnostics.Trace.Write("test"); 
       instanceRepository.Add(instance); 
       instanceRepository.Save(); 

       return RedirectToAction("Details", new { id = instance.InstanceID }); 
      } 
      catch 
      { 
       ModelState.AddRuleViolations(instance.GetRuleViolations()); 
      } 
     } 
     return View(instance); 
    } 

在我看來,我有:

 <div class="editor-label"> 
      <%= Html.LabelFor(model => model.Added) %> 
     </div> 
     <div class="editor-field"> 
      <%= Html.TextBoxFor(model => model.Added,String.Format("{0:g}",Model.Added))%> 
      <%= Html.ValidationMessageFor(model => model.Added) %> 

當我第一次去實例/添加默認值是否設置正確,但只要我提交日期輪到1/1/0001(從我的理解,這表明它是空或無法識別的格式)

當我在Request.Form上調試和監視手錶時,我看到日期進入編碼即Request.Form {Added = 4%2f9%2f2010 + 8%3a24%3a39 + AM} - 這是一個問題嗎?

我知道它可能沒有足夠的信息來弄清楚爲什麼這是失敗的,但如果有人可以提供一些很好的調試技巧,以確定如何確定提交的日期正在變得越來越快,我真的很感激它。

+0

Html.TextBoxFor不能在MVC 1,你已經寫了 – Gregoire 2010-04-09 17:06:04

+0

唉 - 我必須使用MVC 2 - 曾都安裝,我想我是使用1,但這只是爲了表明我對此有多新... – engil 2010-04-09 17:20:16

+0

你是對的 - System.Web.MVC的屬性顯示2.0版 - 感謝Gregoire – engil 2010-04-09 17:27:27

回答

0

感謝所有的答案...這個錯誤竟然是在我的部分模型類:

namespace MSSQL_Manager.Models 
{ 
[Bind(Include="xxxxxx,xxxxx,xxxx,xxxx")] 
public partial class Instance 
{ 
    public bool IsValid 
    { 
     get { return (GetRuleViolations().Count() == 0); } 
    } 

我沒有在「已添加的」場[Bind(Include =「xxxx」)]屬性。

需要更多地閱讀了關於屬性 - 感謝大家對自己的時間

1

問題是上面的String.Format("{0:g}", Model.ExpirationDate)位是TextBoxFor方法的TemplateName參數。視圖引擎將無法找到與日期匹配的模板。

你需要做的是裝飾你的模型

// inside your Instance model 
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:g}")] 
[DisplayName("Added")] 
public DateTime Added { get; set; } 

,然後使用您的視圖

<%= Html.EditorFor(model => model.DateRequired)%> 

下面我從here了這個解決方案。

+0

感謝尼克 - 我會檢查這個鏈接 – engil 2010-04-09 17:23:26

0

它看起來像是國際海事組織的本地化問題。

看到這個post