将值从表单标签传递到操作方法不起作用

时间:2018-07-03 12:02:09

标签: c# html asp.net-mvc

我有一个输入类型为number的表单,我想选择一个数字,然后按“提交”并从数据库中删除特定行。

输入类型如下:

<input type="number" name="id" value=""/>  

我正在使用路径,我想将该特定值传递给:

http://localhost:51206/api/Values/delete/id

当我输入一些数字而不是id时,它可以工作。当我按ID值提交时,它说不起作用,因为它是空值。

HTML

<form action="http://localhost:51206/api/Values/delete/id" method="post">
    <fieldset>
        <div style="text-align: center">
            DELETE
            <input type="number" name="id" value=""/>
            <input type="submit" value="Submit"/>
        </div>
    </fieldset>
</form>  

控制器

public IHttpActionResult Delete(int id)
    {
        var delete = Connection.dm.Student.FirstOrDefault(s => s.StudentID == id);
        if (delete != null) {
            Connection.dm.Student.Remove(delete);
            Connection.dm.SaveChanges();
        }
        return Ok(Models.db.test);
    }

2 个答案:

答案 0 :(得分:2)

从网址中删除'/id',对其进行简化,并在文本框中使用id attribute,它将绑定。

查看

<form action="api/Values/Delete" method="post">
    <fieldset>
        <div style="text-align: center">
            DELETE
            <input type="number" id="id" value=""/>
            <input type="submit" value="Submit"/>
        </div>
    </fieldset>
</form> 

控制器

[HttpPost]
public IHttpActionResult Delete(int id)
{
  var delete = Connection.dm.Student.FirstOrDefault(s => s.StudentID == id);
  if (delete != null) {
      Connection.dm.Student.Remove(delete);
      Connection.dm.SaveChanges();
      }
      return Ok(Models.db.test);
}

答案 1 :(得分:1)

您应该将属性[HttpPost]添加到您的方法中:

[HttpPost]
public IHttpActionResult Delete(int id)

并从表单操作中删除id

<form action="http://localhost:51206/api/Values/delete" method="post">