2017-06-27 19 views
0

私の例では、ボタンクリックからコントローラを呼び出すことができません。 ボタンコード:ボタンでコントローラを呼び出さないMVCをクリック

<button id="confirmsignup" name="confirmsignup" class="btn btn-success" onclick="location.href='@Url.Action("RegisterUser", "Home")'" >Sign Up</button> 

マイコントローラはHomeControllerです。

私のアクションメソッドは次のとおりです。

[HttpPost] 
    public ActionResult RegisterUser(UserInfo objUser) 
    { 

     int res= udaObj.RegisterUser(objUser); 
    } 
+0

'location.href'は返信しません。現在のページを '/ Home/RegisterUser'ページに' HttpGet'ステータスでリダイレクトします。あなたは何を達成しようとしていますか? – Win

+0

そのボタンをクリックすると、データを挿入するためにそのRegisterUserメソッドをヒットする必要があります。 –

答えて

1

ラインlocation.href="someurl"そのURLへの新しいGETリクエストを発行します、いないフォームポスト!

HttpPostアクションメソッドにフォーム(およびそのデータ)を送信するには、フォーム要素をformタグ内にラップし、ボタンに送信させます。フォームのアクション属性をRegisterUserアクションメソッドに設定します。

ヘルパーメソッドHtml.BeginFormを使用すると、フォームタグマークアップを生成できます。

@using(Html.BeginForm("RegisterUser","Home")) 
{ 
    <!-- your other input form elements goes here --> 

    <button id="confirmsignup" type="submit" 
        name="confirmsignup" class="btn btn-success" >Sign Up</button> 

} 
+0

私のcshtmlページにそのようなもの(html.beginform ...)を使用することはできますか?私の別のdivには、同じコントローラ内でLoginUserを押すべき別のボタンが含まれているからです。 –

+0

はい。同じビューに複数のフォームを含めることができます。しかし、それらがネストされていないことを確認してください。ネストされたフォームが無効ですhtml – Shyju

+0

ログインに2つのボタンと登録に1つのボタンを使用すると、ログインはコントローラに当たっているのに対し、登録はリダイレクトされません。 –

0
<button id="confirmsignup" name="confirmsignup" class="btn btn-success" onclick="location.href='@Url.Action("RegisterUser", "Home")'" >Sign Up</button> 

あなたがボタンクリックのregisterUserメソッドを呼び出し望めない.soはHTTP GETメソッドを持っているように上記のコードは定義されています。

MVCフォーム送信またはjqueryポストを使用してHTTP POSTメソッドを呼び出す それ以外はGETメソッドがあると考えられます。

+0

意味、どちらのボタンにもこのメソッドを使用できますか? –

関連する問題