2016-11-11 4 views
1

MVC 6コアWebアプリケーションでブートストラップを使用して簡単なボタンアクションを作成する方法を知りたいと思います。だから私は、例えば、SQLストアドプロシージャを実行するか、単にサーバーから日付を取得するか、または要求に応じてサーバーからコードで他のものを取得し、テキストボックスに表示することができます。特に私は飾り気のない最小限のコードを知りたい。runat serverの正しい構文MVC 6 .netコアとブートストラップ付きのボタン

<asp:??? input type="button" runat="server" onclick="btn_Click" class="btn btn-default"> 

または多分

<div> 
<button type="button" class="btn btn-default" runat="server" onclick="btn_Click"> 
</div> 

そのおそらく簡単な質問が、私は、それはMVC-6で行う必要がありますし、古いバージョンまたはASPページ

答えて

2

にそれが呼び出されていないではない方法に混乱もうMVC 6です。今はASP.NET Core 1.0です。 runat = "server"は、Webフォームをサポートしていないので、ASP.NET Core 1.0では使用されず、代わりにMVCパラダイムに依存しています。同じ理由で、onclick属性もありません。

だからボタンは次のようになります。

<button type="submit" class="btn btn-default">Click Here</button> 

とコントローラのアクションメソッドは、次のようになります。

[HttpPost] 
    public IActionResult Post() { 
     /*do work here*/ 

     return View(); 
    } 



全例

コミッフォームに複数のボタンがあった場合、どのボタンがクリックされたかをどのように表示するかの例を尋ねました。次に例を示します。

/Views/example/index.cshtml

<html> 
    <body> 
     <form asp-controller="example" asp-action="Index"> 
      <label>Value:</label><input name="someValue" type="text" maxlength="10" /> 
      <button name="btnOne" type="submit" class="btn btn-default">Click One</button> 
      <button name="btnTwo" type="submit" class="btn btn-default">Click Two</button> 
     </form> 
    </body> 
</html> 

/Controllers/example/ExampleController.cs

using Microsoft.AspNetCore.Mvc; 

namespace App.Web.Controllers { 

    public class ExampleController: Controller { 

     public ExampleController() { 

     } 

     [HttpGet] 
     [Route("/example/")] 
     public IActionResult Index() { 
      return View(); 
     } 


     [HttpPost] 
     [Route("/example/")] 
     public IActionResult Index(string someValue) { 
      string buttonClicked = ""; 


      if(HttpContext.Request.Form.ContainsKey("btnOne")) { 
       buttonClicked = "btnOne"; 
      } else if(HttpContext.Request.Form.ContainsKey("btnTwo")) { 
       buttonClicked = "btnTwo"; 
      } 

      return View("Index"); 
     } 

    } 
} 

あなたはについての詳細を学ぶことができますASP.NET Coreのフォームはここにあります:https://docs.microsoft.com/en-us/aspnet/core/mvc/views/working-with-forms
ebformsでも学習曲線は最初は少し急である。

+0

興味深いので、runat = serverはありませんが、このタスクをフックする(IActionresult Post)[HttpPost]というリダイレクタがあります。私はあなたがあなたの事例でどれが押されたかをどのように検出すればよいのか、異なる行動のための複数のボタンを持っているのだろうか? – user3800527

+0

通常、アクションメソッド名には、処理するビューの名前(この場合はPost)が反映されるため、通常はビュー(別名ページ)に固定されます。どのボタンがクリックされたのかを知るには、ボタンの名前属性を使ってボタンに名前をつけ、残りのフォームデータにその名前がポストバックされ、その名前の存在を確認することができますボタンをクリックしました。 –

+0

ありがとう、私はasp.netのコアを勉強していますが、このコンセプトを理解するのが難しいと思うかもしれません。ちょうどあなたの最後のコメントで説明したものが示されている小さなサンプルかもしれません。 – user3800527

関連する問題