2013-05-08 11 views
15

MVCでボタンのクリックをトリガーするために、私は私のアプリのための登録フォームを作成していますが、私のボタンのクリックがどのように私はMVCに新たなんだ4

ビューの下に与えられていない現在のコードが動作していない

<fieldset> 
      <legend>Sign Up</legend> 
      <table> 
       <tr> 
        <td> 
         @Html.Label("User Name") 
        </td> 
        <td> 
         @Html.TextBoxFor(account => account.Username) 
        </td> 
       </tr> 
       <tr> 
        <td> 
         @Html.Label("Email") 
        </td> 
        <td> 
         @Html.TextBoxFor(account => account.Email) 
        </td> 
       </tr> 
       <tr> 
        <td> 
         @Html.Label("Password") 
        </td> 
        <td> 
         @Html.TextBoxFor(account => account.Password) 
        </td> 
       </tr> 
       <tr> 
        <td> 
         @Html.Label("Confirm Password") 
        </td> 
        <td> 
         @Html.Password("txtPassword") 
        </td> 
       </tr> 
       <tr> 
        <td> 
         <input type="submit" name="btnSubmit" value="Sign Up" /> 
        </td> 
       </tr> 
      </table> 
     </fieldset> 
(完全には完了していない)

モデル

public class Account 
{ 
    public string Username { get; set; } 
    public string Email { get; set; } 
    public string Password { get; set; }  

} 

コントローラ

public class AccountController : Controller 
    { 
     // 
     // GET: /Account/ 

     public ActionResult Index() 
     { 
      return View(); 
     } 

     // GET: /Account/SignUp 

     public ActionResult SignUp() 
     { 

      return View(); 

     } 

     [HttpPost] 
     public ActionResult SignUp(string userName,string email,string password) 
     { 
      Account createAccount = new Account(); 

      createAccount.Username = userName; 
      createAccount.Email = email; 
      createAccount.Password = password; 

      return View("Index"); 

     } 

    } 

ここでクリックイベントを定義する方法http投稿を試したが動作しないコードが正しくないことを知っているここでエラーが何であるかを指摘してください

+0

のようになります。私は1 –

+0

を参照してください傾けるようにあなたのビュー周囲のフォームを持っています** [クライアント側でこれを行うにはここをクリックしてください](http://stackoverflow.com/a/16245682/2007801)** –

答えて

32

ASP.NET MVCはASP classicなどのイベントでは機能しません。 「ボタンクリックイベント」はありません。コントローラメソッドは、サーバーに送信される要求に対応します。

代わりに、あなたはこのようなコードを何かにそのフォームをラップする必要があります。

@using (Html.BeginForm("SignUp", "Account", FormMethod.Post)) 
{ 
    <!-- form goes here --> 

    <input type="submit" value="Sign Up" /> 
} 

これは、フォームを設定し、その後、あなたの提出入力は想定して、あなたのSignUp()方法を打つであろう、POSTがトリガされますあなたのルートは適切に設定されています(デフォルトはうまくいくはずです)。

0

MVCはイベントを行いません。ページにフォームと送信ボタンを置くだけで、HttpPost属性で装飾されたメソッドがそのリクエストを処理します。

ビュー、フォーム、およびコントローラの作成方法については、チュートリアルまたは2ページをお読みください。

+0

それは私のために働いていない –

+0

動作していないエラーではありません。あなたの目に見えるものと期待するものを(あなたの質問ではなく、コメントに)説明してください。 – CodeCaster

2

yoが@anaximanderの答えどおり

@using (Html.BeginForm("SignUp", "Account", FormMethod.Post)){<fieldset> 
    <legend>Sign Up</legend> 
    <table> 
     <tr> 
      <td> 
       @Html.Label("User Name") 
      </td> 
      <td> 
       @Html.TextBoxFor(account => account.Username) 
      </td> 
     </tr> 
     <tr> 
      <td> 
       @Html.Label("Email") 
      </td> 
      <td> 
       @Html.TextBoxFor(account => account.Email) 
      </td> 
     </tr> 
     <tr> 
      <td> 
       @Html.Label("Password") 
      </td> 
      <td> 
       @Html.TextBoxFor(account => account.Password) 
      </td> 
     </tr> 
     <tr> 
      <td> 
       @Html.Label("Confirm Password") 
      </td> 
      <td> 
       @Html.Password("txtPassword") 
      </td> 
     </tr> 
     <tr> 
      <td> 
       <input type="submit" name="btnSubmit" value="Sign Up" /> 
      </td> 
     </tr> 
    </table> 
</fieldset>} 
10

このコードを試すことができますが、あなたのサインアップアクションがより

[HttpPost] 
    public ActionResult SignUp(Account account) 
    { 
     if(ModelState.IsValid){ 
      //do something with account 
      return RedirectToAction("Index"); 
     } 
     return View("SignUp"); 
    } 
+3

実際、少し検証が良い考えです。 – anaximander

関連する問題