从javascript调用.cs中的方法

时间:2015-06-08 13:04:33

标签: javascript c# forms

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

那么......那是我在EmployeeBL.cs中的一个CRUD函数:

[WebMethod]

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

虽然在这里我的Employee.tpl女巫应该调用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());



 });

});

总结:我需要创建一个Employee(带有Id,LastName,FirstName),通过单击Button来写入我的数据库 所以我的问题是如何设置可见EmployeeBL.cs的命名空间以及如何在脚本中调用它的方法CreateEmployee()(单击Button)? Thx提前!!

2 个答案:

答案 0 :(得分:0)

这应该有效

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

答案 1 :(得分:0)

@Yuri:首先Ty非常感谢帮助。我发现时间更好,避免这种情况。这是我的错,因为我跳过告诉你我正在使用带有Owin和MVC模式的ACSPNET。所以我创建了MVC文件和一个业务逻辑一个。在函数Invoke()下的Controller中,我必须找到一个方法来调用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中只定义了表单和按钮。