我想在我的視圖中調用一個按鈕的onClick事件模型中的方法,但我不知道如何使這項工作。按鈕只是沒有做任何事情。如何使用Asp.Net中的按鈕來調用方法
這是我的看法:
<html>
<body>
<div>
<p>Coins: @Model.Coins</p>
<button type="button" id="btnScore"
onclick="Btn_Click">Click me!</button>
</div>
</body>
</html>
這是我嘗試調用的方法模型:
public class ClickerGame
{
public int Coins { get; set; }
public ClickerGame()
{
Coins = 0;
}
public void Btn_Click()
{
Coins++;
}
}
這是控制器:
public class ClickerController : Controller
{
// GET: /<controller>/
public IActionResult Index()
{
ClickerGame model = new ClickerGame();
return View(model);
}
}
這是我的Startup.cs
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Clicker}/{action=Index}/{id?}");
});
}
}
我能夠在視圖中調用@ Model.Coins中的硬幣數量,但是當我嘗試使用@ Model.Btn_Click時,它給了我一個錯誤,指出該方法無法轉換爲委託對象。 我在visual studio中使用Asp.Net Core 1.0.1。
編輯: 我改變了控制器和視圖,它現在能夠調用的方法,但是,當它試圖增加硬幣可變我得到一個NullReference例外...
的觀點:
@model AspNetClicker.Models.ClickerGame
<script>
function IncrementCount()
{
location.href = "@Url.Action("IncrementCount")";
}
</script>
<html>
<body>
<div>
<p>Coins: @Model.Coins</p>
<button type="button" id="btnScore"
onclick="IncrementCount()">
Click me!
</button>
</div>
</body>
</html>
ClickerGame:
public class ClickerGame
{
public int Coins { get; set; }
public ClickerGame()
{
Coins = 0;
}
}
ClickerController:
public class ClickerController : Controller
{
ClickerGame model;
public IActionResult Index()
{
model = new ClickerGame();
return View(model);
}
public void IncrementCount()
{
model.Coins++;
}
}
據我的onclick知道應該有一個javascript調用。還有其他方法可以調用.NET方法(如回調等),但它不能像你寫的那樣。您可能需要編寫一個JavaScript方法「Btn_Click」。關於錯誤消息,您需要在Btn_Click旁邊的空括號內點擊按鈕的HTML標記 – Nirman
您沒有使用任何內置模板或ajax調用,他們如何調用click事件....它不是.aspx,它是mvc。 –
可能你混合了aspnet webforms和mvc方法。您可以開始閱讀官方的aspnet核心文檔。 https://docs.microsoft.com/en-us/aspnet/core/mvc/overview –