我想在单击页面上的按钮时执行我直接在 razor 页面上编写的 C# 方法。我发现,如果我引用了页面上的按钮,它会在第一次加载时执行该方法,但当我实际单击该按钮时,它不会再次执行。这是代码:
Razor 页面 C# 参考:
@functions
{
int productIndex = 0;
int AddProduct()
{
productIndex = productIndex + 1;
return productIndex;
}
}
按钮参考:
<button type="button" class="btn btn-success" onclick="@AddProduct()" value="New Product" />
我也尝试过这个参考并得到相同的结果:
<input class="btn btn-success" onclick="@AddProduct()" value="New Product"/>
我的第二部分问题是如何阻止它在页面加载时执行,以便它只在单击时运行?我找到了参考资料Page.IsPostBack)
但这似乎在客户端并未得到认可。
这可能有点晚了,但我只是使用 ASP.NET Core 和 Razor 页面开发一个网站,这就是我在按钮后面实现 C# 代码所做的事情。我的按钮执行调用该函数的后操作OnPostGenerateWebName()
(按钮的处理程序名称是GenerateWebName
)因此按钮的后操作将查找并运行名为的函数OnPost<handler name>
:
首先我在网页上创建了一个按钮(BusinessDetails.cshmtl
file):
<button type="submit" asp-page-handler="GenerateWebName" class="btn btn-outline-info"
id="btnGenerateWebName">Generate Business Web Name</button>
接下来我创建处理程序OnPostGenerateWebName
在 C# 中(在BusinessDetails.cshtml.cs
文件)调用另一个 C# 函数CreateWebName()
:
public async Task<IActionResult> OnPostGenerateWebName(string returnUrl = null)
{
CreateWebName();
// all done
return Page();
}
private void CreateWebName()
{
//generate a web name for this business
if (Business.BusinessName.Length > 0)
{
var WebName = Business.BusinessName;
// remove all special characters, only keep 0-9,a-z,A-Z
WebName = Regex.Replace(Business.BusinessName, "[^0-9a-zA-Z]+", "");
// set the new web name
ModelState.Clear();
Business.BusinessWebName = WebName;
}
此函数根据企业名称创建一个网站名称,并通过设置底层类模型元素在表单上显示网站名称Business.BusinessWebName
。为了让它显示在表格上,我必须打电话ModelState.Clear()
.
希望这对您将来有所帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)