2017-07-02 33 views
0

是ASP.net的新功能,從ASP.net中的按鈕單擊調用方法。我試圖創建一個簡單的頁面視圖,它有一個按鈕,點擊後,這會調用一個控制器中的方法,然後用c#進行更多的代碼和計算。使用控制器

我閱讀文章,並嘗試過,但該方法似乎並沒有被調用,調試器永遠不會停止在控制器ClickButton1方法。

我看來碼

<div> 
 
    <input id="Button1" type="button" value="Button 1" onclick="ClickButton1()" /> 
 
    <input id="Button2" type="button" value="Button 2" onclick="location.href='@Url.Action("Options", "Home")'" /> 
 
</div> 
 

 
<div> 
 
    <canvas id="mapCanvas" width="500" height="150" style="border:1px solid #000000;"></canvas> 
 
</div> 
 

 
<script> 
 
function ClickButton1() { 
 
    $.ajax({ 
 
     type: "POST", 
 
     url: '@Url.Action("ClickButton1", "Definition")', 
 
     async: true, 
 
     success: function (msg) { 
 
      ServiceSucceeded(msg); 
 
     }, 
 
     error: function() { 
 
      return "error"; 
 
     } 
 
    }); 
 
} 
 
</script>

我的控制器

namespace Traveler.Controllers 
 
{ 
 
    public class DefinitionController : Controller 
 
    { 
 
     // GET: /<controller>/ 
 
     public IActionResult Index() 
 
     { 
 
      return View(); 
 
     } 
 

 
     // Action click on Button 1 
 
     public void ClickButton1() 
 
     { 
 
      Console.WriteLine("Button 1 Clicked"); 
 
     } 
 
    } 
 
}

+0

是'ClickButton1'標記爲'HttpPost'?不。但是你的JavaScript正在嘗試POST。你爲什麼要做'返回'錯誤';'而不是得到錯誤信息?您是否在瀏覽器的網絡流量上查看瀏覽器的開發者工具? – mason

+0

嗨梅森,用這個帖子的代碼爲另一個似乎具有相同pb的開發者。我肯定錯過了一些東西。 https://stackoverflow.com/questions/40928088/how-to-use-buttons-in-asp-net-to-call-a-method – Frens

+0

我指出你在我以前的評論中錯過了什麼。 – mason

回答

0

改變輸入類型按鈕從提交,以避免多次提交。

將您的控制器方法標記爲[HttpPost],然後重試。

如果你想知道爲什麼你應該做的,這樣說的:

[HttpPost]屬性告訴路由引擎的任何POST請求的行動方法發送到了對方的一個方法。這是一種重載。

如果你想知道如何標記你的方法爲[HttpPost]方法,看看這個:

[HttpPost] 
public void ClickButton1() 
{ 
    Console.WriteLine("Button 1 Clicked"); 
} 

我希望這將幫助你:)

+0

謝謝,這似乎確實工作。調試器現在停在控制檯上。無法在控制檯中看到文本,但至少可以達到這一點。非常感謝 ! – Frens

+0

@Frens歡迎你我的朋友,如果這個答案是對您有所幫助,請投了:) –

+0

我沒有投票起來......我太新在論壇上尚未有此數,但。我檢查了你的答案是對這個問題有效的答案。乾杯! – Frens

相關問題