gpt4 book ai didi

c# - Asp.Net中如何使用按钮调用方法

转载 作者:行者123 更新时间:2023-11-30 21:44:19 24 4
gpt4 key购买 nike

我正在尝试使用按钮的 onClick 事件使我的 View 中的按钮调用模型中的方法,但我不确定如何进行这项工作。该按钮什么都不做。

这是我的观点:

<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++;
}
}

这是 Controller :

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?}");
});
}
}

我可以通过在 View 中调用@Model.Coins 来获取硬币数量,但是当我尝试使用@Model.Btn_Click 时,它给我一个错误,指出该方法无法转换为委托(delegate)对象。我在 visual studio 中使用 Asp.Net Core 1.0.1。

编辑:我更改了 Controller 和 View,它现在可以调用该方法,但是当它尝试增加 coin 变量时,我得到一个 NullReference 异常...

View :

@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>

点击游戏:

public class ClickerGame

{
public int Coins { get; set; }

public ClickerGame()
{
Coins = 0;
}
}

点击 Controller :

public class ClickerController : Controller
{
ClickerGame model;

public IActionResult Index()
{
model = new ClickerGame();
return View(model);
}

public void IncrementCount()
{
model.Coins++;
}
}

最佳答案

不可能像在网络表单中那样做。我将简要说明。请实现。请按照以下步骤使其在 MVC 中工作:

<强>1。将您的 View 代码更改为以下代码:

<html>
<body>
<div>
<p>Coins: @Model.Coins</p>
<button type="button" id="btnScore"
onclick="IncrementCount()">Click me!</button>
</div>
</body>

<script>
function IncrementCount() {
$.ajax({
type: "POST",
url: "/Clicker/IncrementCount",
async: true,
success: function (msg) {
ServiceSucceeded(msg);
},
error: function () {
return "error";
}
});
}
</script>

</html>

<强>2。在您的 Controller 中添加一个操作方法 IncrementCount 并在此处增加计数。

public class ClickerController : Controller
{
[HttpPost]
public void IncrementCount()
{
//
}
}

关于c# - Asp.Net中如何使用按钮调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40928088/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com