从javascript调用.cs中的方法

本文关键字:方法 cs javascript 调用 | 更新日期: 2023-09-27 17:54:07

我正在与以下问题堆叠:我想创建一个包含表单的模板(3个文本框和一个按钮)。在此模板中,通过javascript,必须调用.cs内部的函数(CRUD方法)。

所以…这是EmployeeBL.cs中的CRUD函数之一:

[WebMethod]
public static bool CreateEmployee(int Id, string Nome, string Cognome) 
{ ...} 

而这里是我的雇员。tpl witch应该调用CreateEmployee():

<div class="container" style="max-width: 400px">
    <form class="form-horizontal" method="post" id="Form"
          data-bv-feedbackicons-valid="glyphicon glyphicon-ok"
          data-bv-feedbackicons-invalid="glyphicon glyphicon-remove"
          data-bv-feedbackicons-validating="glyphicon glyphicon-refresh"
          data-bv-submitbuttons='button[type="submit"]'>
        <div class="form-group">
        {Message}
    </div>
    <div class="form-group">
        <input type="text" class="form-control" id="Id" placeholder="User name" value="{Model.Id}"
                data-bv-notempty-message ="{UserNameNotEmptyMessage}" />
    </div>
    <div class="form-group">
        <input type="text" class="form-control" id="FirstName" placeholder="First Name" value="{Model.FirstName}"
                data-bv-notempty-message="{FirstNameNotEmptyMessage}" />
    </div>
    <div class="form-group">
        <input type="text" id="LastName" placeholder="Last Name" value="{Model.LastName}" />
    </div>

    <div class="form-group">
        <button type="submit" class="btn btn-default" value="Submit" id="myButton" >Create Employee</button>
    </div>

现在总是在这个tpl里面放一个像这样的脚本:

<script type="text/javascript">
$(document).ready(function ()
{
$("#Form").bootstrapValidator();
    $("#myButton").click(function(){
  var Id=foo($('#Id').val());
  var FirstName= foo($('#FirstName').val());
  var LastName=foo($('#LastName').val());

 });

});

总结:我需要创建一个员工(Id,LastName,FirstName),通过点击按钮写在我的DB上所以我的问题是如何设置可见的EmployeeBL.cs的名称空间,以及如何调用它的方法CreateEmployee()内脚本(点击按钮)?提前感谢!!

从javascript调用.cs中的方法

@Yuri:首先谢谢你的帮助。同时我发现最好避免这种方式。这是我的错,因为我没有告诉你我正在使用ACSPNET与Owin和MVC模式。所以我创建了MVC文件和业务逻辑一个..在控制器下的函数Invoke()我必须找到一个方法来调用EmployeeBL.CreateEmployee(),同时返回一个模板,像这里:

public class EmployeeController : Controller<EmployeeModel>
{
    public override ControllerResponse Invoke()
    {
        var claims = new List<Claim>{
           new Claim(ClaimTypes.Name,Model.Id.ToString()),
           new Claim(ClaimTypes.Name,Model.Name),
           new Claim(ClaimTypes.Name,Model.Surname)
       };
        return newTpl(GetView<EmployeeView().Get(Model,Html.MessageBox.Show(StringTable.EmployeeModel)) , StringTable.PageTitleCreateEmployee);
    }
}

其中Get()函数定义如下:

public class EmployeeView : View 
{
    public ITemplate Get(EmployeeModel viewModel = null, string message = null)
    {
        return
            TemplateFactory.Load("Employee.tpl")
                            .Model(viewModel)
                            .Set().Set("Message", message);
    }
}

因此在Employee。TPL只定义表单和按钮

应该能行

function createUser()
{
    $.ajax({
        type: "POST",
        url: "YourPageName.aspx/CreateEmployee",
        data: {Id: foo($('#Id').val()), Nome: foo($('#FirstName').val()),Cognome:foo($('#LastName').val()) },
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
             alert('Ok');            }
        error: function (request, status, thrownError) {
           alert(thrownError);
   }
    });
}