繁体   English   中英

ASP.NET Core 2.1 API不采用参数

ASP.NET Core 2.1 API not taking parameter

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在尝试从我的API传递参数,但似乎没有接受它。 我有一个我想传递的lastName(最终将被唯一的ID代替),该名字最终将路由到个人资料视图或该人。

这是我的API控制器:

   public class GetInquiryController : BaseController
{
    private GetInquiry manager;
    public GetInquiryController(IConfiguration config) : base(config)
    {
        manager = new GetInquiry(config);
    }

    [HttpGet]
    [Route("api/[controller]")]
    public IEnumerable<InquiryModel> Get(string lastName)
    {
        return manager.GetInquiriesByUser(lastName);
    }
 }

我的存储过程的逻辑得到了姓氏

  public class GetInquiry
{
    private readonly IConfiguration configuration;

    public GetInquiry(IConfiguration config)
    {
        configuration = config;
    }

    public IEnumerable<InquiryModel> GetInquiriesByUser(string lastName)
    {
        string ApplicationDB = configuration.GetConnectionString("ApplicationDB");
        List<InquiryModel> lstinquiry = new List<InquiryModel>();
        using (SqlConnection con = new SqlConnection(ApplicationDB))
        {
            SqlCommand cmd = new SqlCommand("spGetInquiriesByUser", con);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter lastNameParameter = cmd.Parameters.Add("lastName", SqlDbType.Char, 10);
            lastNameParameter.Value = lastName;
            con.Open();
            SqlDataReader rdr = cmd.ExecuteReader();
            while (rdr.Read())
            {
                InquiryModel inquiry = new InquiryModel();
                //inquiry.FormID = rdr["FormID"].ToString();
                inquiry.firstName = rdr["firstName"].ToString();
                inquiry.lastName = rdr["lastName"].ToString();
                inquiry.SID = rdr["SID"].ToString();
                inquiry.email = rdr["email"].ToString();
                inquiry.phone = rdr["phone"].ToString();
                inquiry.email = rdr["email"].ToString();
                inquiry.employer = rdr["street"].ToString();
                inquiry.city = rdr["city"].ToString();
                inquiry.state = rdr["state"].ToString();
                inquiry.zip = rdr["zip"].ToString();
                inquiry.date = rdr["date"].ToString();
                inquiry.comment = rdr["comment"].ToString();

                lstinquiry.Add(inquiry);
            }
            con.Close();
        }
        return lstinquiry;
    }
  }
}

我正在使用VUE.js并调用我的API

methods: {
  editItem(lastName) {
    let id = lastName
    this.$http.get('http://localhost:61601/api/GetInquiry/', {
      id: lastName
    }),

我尝试使用不带IEnumerable的逻辑,在这种情况下,我认为这不会有所作为。

我想这是我得到的好处,

“ SqlException:过程或函数'spGetInquiriesByUser'需要未提供的参数'@lastName'”

当在浏览器中输入我的API路由时,但是当我在路由或邮递员的末尾添加lastName时,会得到一个空白页面。

希望这是有道理的,如果我需要提供更多细节,并且有人可以指出正确的方向,请告诉我!

1 个回复

您需要定义应该从哪里读取lastName参数。

如果要从路由读取它,请使用FromRoute属性

[HttpGet("{lastName}")] //api/GetInquiry/yourlastname
public IEnumerable<InquiryModel> Get([FromRoute]string lastName)
{
    return manager.GetInquiriesByUser(lastName);
}

如果要从查询字符串读取它,请使用FromQuery属性

[HttpGet] //api/GetInquiry?lastName=yourlastname
public IEnumerable<InquiryModel> Get([FromQuery]string lastName)
{
    return manager.GetInquiriesByUser(lastName);
}

注意 :将GetInquiryController类的[Route("api/[controller]")]移到顶部时,上述解决方案有效。

更新当您添加vue.js api调用时,可以更清楚地了解这为何不起作用,实际上是通过id名称调用lastName参数。 将您的id属性更改为lastName可以在上面使用

methods: {
  editItem(lastName) {
    this.$http.get('http://localhost:61601/api/GetInquiry/', {
      lastName: lastName
    }),
2 Asp.net核心2采用角度6模板

我正在寻找一个模板,使用带有角度6的asp.net core 2.0在一个解决方案中使用f5命中来运行应用程序。 你能帮忙找到这样的要求吗? 谢谢 ...

3 ASP.NET中的类将采用什么方式?

在我的asp.net网络应用中。 我在命名空间WPP下有三个类(位于app_code文件夹中),如下所示: 所有这些类都包含我在应用程序中用来完成不同任务的不同功能。 例如, wpp_common包含一个使我的URL进行wpp_common的功能,而wpp_SQL具有一些用于从数据库 ...

4 ASP.NET核心2.1会话

在ASP.NET核心2.1中,我无法访问会话变量。 在调试时我注意到在每个请求中会话ID都会更改(HttpContex.Session.Id) 我在会话配置中犯了错误吗? Startup.cs Program.cs中 在调试时我注意到在每个请求中会话ID都发生了 ...

5 如何为采用类参数的asp.net网络方法格式化JSON

我在页面后面的asp.net代码上有以下webmethod: SimpleFailureData定义如下: 我试图弄清楚的是如何调用此网络方法并格式化我的数据,以便将其正确投影/解析到该类中,以便我可以使用它。 我尝试向该方法发送json字符串,但是我的方法内的断点从未被命中( ...

7 ASP.NET和参数

我有一个ASP.NET页面(处理程序),该页面在使用&调用时有效。 但是,使用我的页面的第三方页面将&转换为“&”(“&”,“&”),并且该页面抛出“参数无效”。 错误。 我已阅读,参数应与被编码的,但它似乎导致我的页面错误。 .NET将其转换为ampsterstand,amp, ...

9 ASP.NET开发API

我已经在Rails和Django中创建了站点,它们都有一个控制台,您可以在其中访问数据库,创建新对象等。 有什么方法可以在ASP.net上执行此操作吗? 不得不在程序中放置断点只是为了查看站点的当前上下文,这有点糟。 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM