猿问

使用“如果 API 中已经存在”类型语句

我有一个我创建的 API。我(终于)设法用它 GET 和 POST 。现在我想在提交之前检查 POST。


我有一个具有id, name, city, state, 和属性的类(这是正确的词吗?我还在学习行话)country。


我有一个带有按钮的表单,该按钮有一个单击事件方法,如下所示:


protected void submitButton_Click(object sender, EventArgs e)

{

    void Add_Site(string n, string ci, string s, string co)

    {

        using (var client = new HttpClient())

        {


            site a = new site

            {

                name = n,

                city = ci,

                state = s,

                country = co

            };


            var response = client.PostAsJsonAsync("api/site", a).Result;

            if (response.IsSuccessStatusCode)

            {

                Console.Write("Success");

            }

            else

                Console.Write("Error");

        }

    }


    Add_Site(nameText.Text, cityText.Text, stateText.Text, countryText.Text);

}

现在,在这一点上,它按预期工作。但是,我想限制它。


我想做的是让它看看nameText.Text价值。在它运行该POST语句之前,我希望它查看GETAPI中的其他值并确保该名称不存在。


虽然我知道我可能会更新数据库以使该name字段唯一,但我更愿意在 C# 中以编程方式进行。


这在我的 C# 代码中是可能的吗?如果是这样,我将使用什么函数以及如何让它返回Site.Name属性来比较我的nameText.Text值?


编辑:这是POST其中一条评论中要求的代码。注意:这是在我添加控制器时由 Visual Studio 自动生成的。


    // POST: api/site

    [ResponseType(typeof(site))]

    public IHttpActionResult Postsite(site site)

    {

        if (!ModelState.IsValid)

        {

            return BadRequest(ModelState);

        }


        db.site.Add(site);

        db.SaveChanges();


        return CreatedAtRoute("DefaultApi", new { id = site.id }, site);

    }

我什至不知道从哪里开始添加“如果名称已经存在,则抛出错误”,因此某种演练就足够了。


慕雪6442864
浏览 169回答 1
1回答

胡说叔叔

如果任何站点具有提供的名称 (site.Name),这里是在数据库中查找的代码:if (db.site.Any(o => o.Name == site.Name))     return BadRequest("Name already exists.");
随时随地看视频慕课网APP
我要回答