2012-01-19 21 views
1

私はお問い合わせフォームを作成して、モデルは単純で構成されてい...名前、電子メール、電話番号などMVC - Ajax.BeginForm - 投稿複数回

私はいくつかの上のいくつかの簡単な、必要な属性を持つモデルにプロパティ。

妥当性検査エラーが発生しなかった場合、これはすべてうまくいっています。フォームが送信されたことを伝える電子メールが表示され、「ありがとうございます」というメッセージがユーザーに表示されます。

私の問題は、検証に失敗した場合です。テキストボックスなどに通常の赤い枠線が表示されるようになりました。ユーザーがテキストボックスを更新して検証要件に合致し、再度送信すると、2つのメールが届きます。両方が正確に同じ詳細です。しかし、あなたが何回通話(メール)を受信したかの検証に失敗することが何度もあるようです。

私はMVCにかなり慣れています。あなたが正しい方向に向けることができれば、それは素晴らしいことです。

乾杯、

J

フォーム:

using (Ajax.BeginForm("ProcessContact", "Contact", null, new AjaxOptions { UpdateTargetId = "subContentWrapper", })) 
      { 
      @Html.ValidationSummary() 

      <p> 
       <strong>Please tell us a little about you and the nature of your enquiry </strong> 
      </p> 
      <table> 
       <tr> 
        <td style="width: 200px;"> 
         Name: 
        </td> 
        <td>@Html.TextBoxFor(x => x.Name, new { @class = "textBox" }) 
        </td> 
       </tr> 
       <tr> 
        <td> 
         Company Name: 
        </td> 
        <td>@Html.TextBoxFor(x => x.CompanyName, new { @class = "textBox" }) 
        </td> 
       </tr> 
       <tr> 
        <td> 
         E-mail: 
        </td> 
        <td>@Html.TextBoxFor(x => x.Email, new { @class = "textBox" }) 
        </td> 
       </tr> 
       <tr> 
        <td> 
         Phone: 
        </td> 
        <td>@Html.TextBoxFor(x => x.Phone, new { @class = "textBox" }) 
        </td> 
       </tr> 
      </table> 

      <br /> 
      <br /> 
      <p style="text-align: center"> 
       <input type="submit" value="Contact Us" /></p> 
      } 
     } 

コード:

if (ModelState.IsValid) 
     { 
      if (ContactService.ProcessContactSubmission(model)) 
      { 
       ViewBag.Sent = true; 
      } 
      else 
      { 
       ViewBag.Sent = false; 
       ModelState.AddModelError("", "Sorry an error has occured, please try again later."); 
      } 
      return PartialView("~/Views/Modules/Contact Us/Main.cshtml", model); 
     } 
     else 
     { 
      ViewBag.Sent = false; 
      return PartialView("~/Views/Modules/Contact Us/Main.cshtml", model); 
     } 

ContactService.ProcessContactSubmission(モデル) - これだけの偽/電子メールを送信し、trueを返します

+0

は、あなたのコードのplzを投稿することができますホープ? –

+0

投稿を更新してコードスニペットを追加しました。ありがとう – Diginari

+0

"subContentWrapper"とは何ですか?それはAJAX形式を取り巻くDIVですか? – Moshe

答えて

0

@jamieフォームが複数回送信されるかどうかチェックすることができますか?可能であれば、ProcessContactSubmissionコードも投稿してください。また、私は (ModelState.IsValid)がループか何かにない場合は、それが私たちに何を知らせてください

0

古いスレッドが、私は帽子に私の調査結果を投げるだろうと思った。

今日私はフォームがajaxフォーム内の送信ボタンを使用して送信されていた場所と同じことをしました。投稿するたびに投稿数が増えていました。

重複していないjsファイルなどをすべてチェックしておけば、送信ボタンを手動でフォームを送信する標準入力タグに変更しただけです。

<input type="button" value="Next" onclick="$('#formtosubmit').submit();" /> 

代わりの

<input type="submit" value="Next" /> 

は、それが他の人

関連する問題