2011-01-05 12 views
0
を作成

I私にHomeControllerのメソッドを作成し、以下の持っている:私はちょうどに戻ってる提出するヒットしかしASP.NET MVC方式

<% using (Html.BeginForm()) {%> 

     <fieldset> 
      <legend>Fields</legend> 
      <p> 
       <label for="headline">Headline</label> 
       <%= Html.TextBox("headline") %> 
      </p> 
      <p> 
       <label for="story">Story</label> 
       <%= Html.TextArea("story") %> 
      </p> 
      <p> 
       <label for="image">Image URL</label> 
       <%= Html.TextBox("image") %> 
      </p> 
      <p> 
       <input type="submit" value="Create News Story" /> 
      </p> 
     </fieldset> 

    <% } %> 

:ここ

[AcceptVerbs(HttpVerbs.Post)] 
     public ActionResult Create([Bind(Exclude = "Id")]Article articleToCreate) 
     { 
      if (!ModelState.IsValid) 
       return View(); 

      try 
      { 
       _db.AddToArticleSet(articleToCreate); 
       _db.SaveChanges(); 

       return RedirectToAction("Index"); 
      } 
      catch 
      { 
       return View(); 
      } 
     } 

としているビューを(フィールドがまだ埋められている)フォームと新しいストーリーは作成されません。なぜどんなアイデア?ありがとう。

編集:私はInnerException {"SqlDateTimeオーバーフローで次のエラーが発生します:1/1/1753 12:00:00 AMと12/31/9999 11:59:59 PMの間にある必要があります。"}

+3

デバッガに尋ねましたか? – driis

答えて

3

それが起こるのは2つの状況だけです。あなたにModelStateは無効である次のいずれかの

if(!ModelState.IsValid) 
    return View(); 

またはDBへの書き込みしようとしたときにスローされる例外があります

catch { return View(); } 

あなたのビューで何の検証メッセージを持っていないので、かどうかを視覚的なフィードバックはありません何かが無効であるかどうか。データベースの問題があるかどうかを私に知らせる方法もありません。

アクションメソッドの始めにステップインしてブレークポイントを設定することをお勧めします。それは問題が何であるかを正確に教えてくれるでしょう。

+0

これは 'catch'部分で起こり、エントリの更新中にエラーが発生したと言います。詳細はこちらを参照してください。 – Cameron

+0

このエラーが発生します:{"SqlDateTimeオーバーフローが発生しました(1/1/1753 12:00:00 AMと12/31/9999 11:59:59 PMの間にある必要があります)"} – Cameron

+0

@Cameron - あなたのビューの日付選択フィールドとあなたのコントローラで1つを設定していない、私はあなたの問題だと思います。 –

0

ビューを返す両方のケースでは、何が問題になったかを返すことはありません。そのため、モデル状態が無効またはDBに保存が失敗しました.....

0

記事の作成中に何か例外が発生しているので、このフェーズでエラーが発生することはありません。 (See Elmah for a very, very easy way to log all of your errors

メソッドでブレークポイントを設定して、実際に何が起こっているのを見たことがありますか?あなたのモデルの状態が無効であるか、例外が発生している可能性があります。少し関連

- あなたのリターンの方法のいずれも:あなたは検証エラーがある場合には、あなたのフィールド値のいずれかが表示されませんので

return View(); 

return RedirectToAction("Index"); 

// and the last one 
return View(); 

は、ビューに任意のモデルデータを渡します。