C# 单击按钮时使用参数调用方法
我正在使用ASP.NET Razor模板创建一个web应用程序,我可以使用它启动和停止服务。 我有一个文本框,我可以在其中输入服务和一个开始和停止按钮C# 单击按钮时使用参数调用方法,c#,razor,asp.net-core,C#,Razor,Asp.net Core,我正在使用ASP.NET Razor模板创建一个web应用程序,我可以使用它启动和停止服务。 我有一个文本框,我可以在其中输入服务和一个开始和停止按钮 <div> <form> Service Name:<br> <input type="text" name="servicename"><br> <button onclick=@Model
<div>
<form>
Service Name:<br>
<input type="text" name="servicename"><br>
<button onclick=@Model.StartService("servicename")>Start</button> <button onclick=@Model.StopService("servicename")>Start</button>
</form>
</div>
我可能做错了,但我对这一点很陌生。我想通过建议的web模板(即使用Razor页面)来实现这一点。这里缺少客户机-服务器的概念。您的
StartService
和StopService
方法存在于服务器端,但是onclick
只意味着客户端的任何内容,特别是用户实际单击将在客户端激活它。您不能像尝试在客户端那样直接调用某些服务器端方法。事实上,这里发生的一切是Razor在呈现视图的过程中实际运行了StartService
和StopService
方法,以便尝试用返回值填充onclick
属性。因此,最终结果是HTML看起来像onclick=“Started”
,其中“Started”可能是您的状态值之一
长话短说,如果在用户单击按钮时需要激活服务器上的某些内容,则必须向服务器提交请求。这可以通过传统的表单post(这将导致页面刷新)或AJAX来完成。在任何一种情况下,您都会使用处理程序发送到路线,然后启动/停止您的服务。您能给我举个例子说明您所说的可以实现的方法吗@Chris PrattAn使用jQuery的示例:似乎您不需要jQuery,您可以使用基本表单submit:
public string StopService(string serviceName)
{
ServiceController[] controller = ServiceController.GetServices(serviceName);
if (controller == null)
{
return null;
}
controller[0].Stop();
controller[0].WaitForStatus(ServiceControllerStatus.Stopped);
return controller[0].Status.ToString();
}
public string StartService(string serviceName)
{
ServiceController[] controller = ServiceController.GetServices(serviceName);
if (controller == null)
{
return null ;
}
controller[0].Start();
controller[0].WaitForStatus(ServiceControllerStatus.Running);
return controller[0].Status.ToString();
}