使用free-jqgrid发布数据,客户端和Web API端的代码是什么?

时间:2016-01-18 20:06:49

标签: asp.net asp.net-web-api jqgrid

我正在使用ASP.NET MVC 6 Web API。在视图中我使用free-jqgrid. 让我们借Oleg's free jqgrid data来证明我的目的。我们已经有了表格。

接下来我要添加新的供应商。请通知数据库中有主键ID(标识列)。我们不希望它显示在屏幕上。 newvendor

VendorRespository.cs中,我将新供应商添加为

    public void AddVendor(Vendor item)
    {
        using (VendorDataContext dataContext = new VendorDataContext())
        {
            dataContext.Database.Connection.ConnectionString = DBUtility.GetSharedConnectionString(
                "http://centralized.admin.test.com");
            var newVendor = dataContext.Vendors.Create();
            newVendor.Company = item.Company;
            newVendor.ContactName = item.ContactName;
            newVendor.ContactPhone = item.ContactName;
            newVendor.UserName = item.UserName;
            newVendor.UserKey = item.UserKey;
            newVendor.Active = item.Active;
            newVendor.FacilityId =item.FacilityId;
            newVendor.ClientID = item.ClientID;
            dataContext.SaveChanges();
        }
    }

我的问题:

  1. 不确定脚本是否喜欢?

    <script>
       API_URL = "/VendorManagement/";
       function updateDialog(action) {
          return {
              url: API_URL
              , closeAfterAdd: true
              , closeAfterEdit: true
              , afterShowForm: function (formId) { }
              , modal: true
              , onclickSubmit: function (params) {
                  var list = $("#jqgrid");
                  var selectedRow = list.getGridParam("selrow");
                  rowData = list.getRowData(selectedRow);
                  params.url += rowData.Id;
                  params.mtype = action;
              }
              , width: "300"
          };
      }
    
    jQuery("#jqgrid").jqGrid('navGrid',
        { add: true, edit: true, del: true },
        updateDialog('PUT'),
        updateDialog('POST'),
        updateDialog('DELETE')
    );
    

  2. 在控制器中,不确定代码是什么?

      // POST
      public HttpResponseMessage PostVendor(Vendor item)
     {
        _vendorRespository.AddVendor(item);
        var response = Request.CreateResponse<Vendor>(HttpStatusCode.Created, item);
        string uri = Url.Link("DefaultApi", new { id = item.Id });
        response.Headers.Location = new Uri(uri);
        return response;
     }
    

    我的代码有许多编译错误,例如

  3.   

    'HttpRequest'不包含'CreateResponse'的定义,最好的扩展方法重载'HttpRequestMessageExtensions.CreateResponse(HttpRequestMessage,HttpStatusCode,Vendor)'需要一个'HttpRequestMessage'类型的接收器

    请帮我摆脱错误和不恰当的代码。

    编辑:

    我从here.

    借用了代码段

1 个答案:

答案 0 :(得分:0)

我需要添加代码,例如

 [Microsoft.AspNet.Mvc.HttpGet]
    public dynamic GetVendorById(int pkey)
    {

        return null;
    }

 // POST
    [System.Web.Http.HttpPost]
    public HttpResponseMessage PostVendor(Vendor item)
    {
        _vendorRespository.AddVendor(item);
        var response = Request.CreateResponse<Vendor>(HttpStatusCode.Created, item);
        string uri = Url.Link("/VendorManagement/GetVendorById", new { id = item.pkey });
        response.Headers.Location = new Uri(uri);
        return response;
    }