Binding POST中的Web API模型绑定问题

Binding POST中的Web API模型绑定问题,binding,model,asp.net-web-api,Binding,Model,Asp.net Web Api,我对Web API还不熟悉,这让我很困惑 模型如下: public class Model { public string firstname { get; set; } public string lastname { get; set; } } 这是控制器: public class TestController : ApiController { [HttpPost] public void Test(Model request) { } }

我对Web API还不熟悉,这让我很困惑

模型如下:

public class Model
{
   public string firstname { get; set; }
   public string lastname { get; set; }
}
这是控制器:

public class TestController : ApiController
{
    [HttpPost]
    public void Test(Model request)
    {

    }
}
<html>
<head>
    <title></title>
</head>
<body>
    <form action="/Test" method="post">
        <input type="text" name="​firstname" value="test1" />
        <input type="text" name="lastname" value="test2" />
        <input type="submit" value="Submit" />
    </form>
</body>
</html>
我正在使用html表单发布,它将命中控制器:

public class TestController : ApiController
{
    [HttpPost]
    public void Test(Model request)
    {

    }
}
<html>
<head>
    <title></title>
</head>
<body>
    <form action="/Test" method="post">
        <input type="text" name="​firstname" value="test1" />
        <input type="text" name="lastname" value="test2" />
        <input type="submit" value="Submit" />
    </form>
</body>
</html>

但是,当我调试到控制器中时,模型对象的
firstname=null
lastname
显示正确


我做错了什么?

所以这是我见过的最奇怪的事情。将此用作您的视图:

<html>
<head>
    <title></title>
</head>
<body>
    <form action="/Home" method="post">
        @*<input type="text" name="​firstname" value="test1" />*@
        <input type="text" name="firstname" value="test1" />
        <input type="text" name="lastname" value="test2" />

        <input type="submit" value="Submit" />
    </form>
</body>
</html>

@**@
编辑:
不确定您是否这样做了,但基本上您的代码是
name=“​;firstname”
。不确定您是否想在其中添加它来干扰人们,但您在其中有一个特殊字符

如果这是直接复制和粘贴,请尝试将
“firstname”
替换为
“firstname”
我会尝试两件事:在测试方法声明中的模型之前添加[FromBody],并检查测试方法中的模型状态错误()假设上述操作不起作用,我还将尝试在Chrome中启动一个直接的jQuery
.ajax()
请求,看看控制台中会发生什么。类似于:
$.ajax('/Test',{type:'POST',data:{firstname:'test1',lastname:'test2'},success:function(data){console.log(data);}}})
您可以使用fiddler2post-composer来测试WEB Api功能。如果这样做很好,请查看您的网页。说真的,您在输入行中使用了什么魔法?