在 cshtml 文件上调用 C# 函数
Call C# function on cshtml file
这些天我开始学习 asp.net,我正在尝试在 cshtml 文件上调用 C# 函数。
ToDoList.cshtml:
function submitClick() {
const checkbox = document.getElementById("checkbox").checked;
const title = document.getElementById("taskTitle").textContent;
@Model.newTaskChecked = checkbox.checked;
@Model.newTaskTitle = title.textContent;
@Model.addTask();
}
ToDoList.cshtml.cs:
public void addTask()
{
tasks.Add(this.newTaskTitle, this.newTaskChecked);
}
编译器说 Não é possível converter implicitamente tipo "void" em "object"。
我需要做什么才能让它发挥作用?
首先,请忘记 cshtml.cs 之类的事情。这是 Razor MVC,所以你将有一个 cshtml 混合 html 和 c#
从 c# 声明后,您可以在项目中使用任何 c# public。
假设您有一些 Class1.cs(在您的项目中)包含如下所示的方法函数 MyTask..
namespace MyNamespace
{
public class Class1
{
public static bool MyTask(int x)
{ return x == 0; }
}
}
.. 然后在 your.cshtml 中,您可以放置一个 using MyNamespace,或者您可以使用其全名引用 MyTask。也许这更容易解释。您可以使用它来测试并在 HTML 中添加一些内容,例如:
@if (MyNamespace.Class1.MyTask(1))
{
<b>ok</b>
}
else
{
<b>nono need 0</b>
}
这将在浏览器中显示“nono need 0”。
编辑:您不能指望让此功能按预期工作:
function submitClick() {
const checkbox = document.getElementById("checkbox").checked;
const title = document.getElementById("taskTitle").textContent;
@Model.newTaskChecked = checkbox.checked;
@Model.newTaskTitle = title.textContent;
@Model.addTask();
}
这里您尝试直接将事物分配给您的模型,来自 Javascript。 checkbox.checked 在服务器端是未知的。 c# 仅在服务器端运行.. 所以要将您的复选框和文本内容发送到服务器,您必须放置一个提交按钮和 POST 您的表单。如果这样做,您可能不需要从 cshtml !
中的任何地方调用 c#
这些天我开始学习 asp.net,我正在尝试在 cshtml 文件上调用 C# 函数。
ToDoList.cshtml:
function submitClick() {
const checkbox = document.getElementById("checkbox").checked;
const title = document.getElementById("taskTitle").textContent;
@Model.newTaskChecked = checkbox.checked;
@Model.newTaskTitle = title.textContent;
@Model.addTask();
}
ToDoList.cshtml.cs:
public void addTask()
{
tasks.Add(this.newTaskTitle, this.newTaskChecked);
}
编译器说 Não é possível converter implicitamente tipo "void" em "object"。 我需要做什么才能让它发挥作用?
首先,请忘记 cshtml.cs 之类的事情。这是 Razor MVC,所以你将有一个 cshtml 混合 html 和 c#
从 c# 声明后,您可以在项目中使用任何 c# public。
假设您有一些 Class1.cs(在您的项目中)包含如下所示的方法函数 MyTask..
namespace MyNamespace
{
public class Class1
{
public static bool MyTask(int x)
{ return x == 0; }
}
}
.. 然后在 your.cshtml 中,您可以放置一个 using MyNamespace,或者您可以使用其全名引用 MyTask。也许这更容易解释。您可以使用它来测试并在 HTML 中添加一些内容,例如:
@if (MyNamespace.Class1.MyTask(1))
{
<b>ok</b>
}
else
{
<b>nono need 0</b>
}
这将在浏览器中显示“nono need 0”。
编辑:您不能指望让此功能按预期工作:
function submitClick() {
const checkbox = document.getElementById("checkbox").checked;
const title = document.getElementById("taskTitle").textContent;
@Model.newTaskChecked = checkbox.checked;
@Model.newTaskTitle = title.textContent;
@Model.addTask();
}
这里您尝试直接将事物分配给您的模型,来自 Javascript。 checkbox.checked 在服务器端是未知的。 c# 仅在服务器端运行.. 所以要将您的复选框和文本内容发送到服务器,您必须放置一个提交按钮和 POST 您的表单。如果这样做,您可能不需要从 cshtml !
中的任何地方调用 c#