Web Api控制器在发布请求期间未命中

时间:2017-06-04 06:43:15

标签: c# asp.net asp.net-web-api

这是我的代码 我将数据从一个页面提供给另一个页面 使用Jquery Ajax。在提供数据时没有击中。

$("#button").click(function () {
            var test = $("#name").val();
            var test1 = $("#username").val();
            var test2 = $("#email").val();
            var test3 = $("#pwd").val();
            var data1 = {
                name: test,
                username: test1,
                email: test2,
                password:test3
            }
            alert("the value is" + test + "" + test1 + "" + test2 + "" + test3);
            $.ajax({
                type: 'POST',
                url: 'http://localhost:54150/api/Login',
                data:data1,
                contentType: 'application/json;charset=utf-8',
                success: function (result) {
                    alert('Data Saved Successfully');
                },
                error: function () {
                    alert("Bad...Really bad");
                }
            });
        });

和我的控制器

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Mvc;
using System.Web.UI.WebControls;
using AbiApp.Models;

namespace AbiApp.Controllers
{
    public class LoginController : ApiController
    {
        String connStr = System.Configuration.ConfigurationManager.ConnectionStrings["CS"].ConnectionString;
        [System.Web.Http.AcceptVerbs("GET", "POST")]
        [System.Web.Http.HttpPost]

        public void Post([FromBody]login loginmodel)
        {
            try
            {
                using (SqlConnection df = new SqlConnection(connStr))
                {
                    using (SqlCommand de = new SqlCommand())
                    {
                        de.CommandType = System.Data.CommandType.StoredProcedure;
                        de.CommandText = "StoreImageDetails";
                        de.Connection = df;
                        de.Parameters.Add(new SqlParameter("@name", loginmodel.name));
                        de.Parameters.Add(new SqlParameter("@username", loginmodel.username));
                        de.Parameters.Add(new SqlParameter("@email", loginmodel.email));
                        de.Parameters.Add(new SqlParameter("@password", loginmodel.password));
                        df.Open();
                        var dt = de.ExecuteNonQuery();
                    }
                }
            }
            catch (Exception ed)
            {
                //ed+Message;    
            }
        }
    }
}

从Jquery Ajax调用它时没有击中 请查看代码和 请找到错误

1 个答案:

答案 0 :(得分:1)

似乎路由问题。你可以删除

[System.Web.Http.AcceptVerbs("GET", "POST")]

并使用属性路由如下

[Route("api/Login")]
public void Post([FromBody]login loginmodel)
        {
            try
            {
                using (SqlConnection df = new SqlConnection(connStr))
                {
                    using (SqlCommand de = new SqlCommand())
                    {
                        de.CommandType = System.Data.CommandType.StoredProcedure;
                        de.CommandText = "StoreImageDetails";
                        de.Connection = df;
                        de.Parameters.Add(new SqlParameter("@name", loginmodel.name));
                        de.Parameters.Add(new SqlParameter("@username", loginmodel.username));
                        de.Parameters.Add(new SqlParameter("@email", loginmodel.email));
                        de.Parameters.Add(new SqlParameter("@password", loginmodel.password));
                        df.Open();
                        var dt = de.ExecuteNonQuery();
                    }
                }
            }
            catch (Exception ed)
            {
                //ed+Message;    
            }
        }