Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么我的模型属性在尝试发布时为空?_C#_Asp.net_.net_Asp.net Mvc - Fatal编程技术网

C# 为什么我的模型属性在尝试发布时为空?

C# 为什么我的模型属性在尝试发布时为空?,c#,asp.net,.net,asp.net-mvc,C#,Asp.net,.net,Asp.net Mvc,因此,我尝试创建一个登录页面,并创建了一个表单,该表单将发布到控制器内的操作 这就是控制器的外观,非常简单,仅用于测试目的 public ActionResult Verify(User account) { var s = account; if (db.Users.Any(o => o.Username == "")) { // Match! } return Redirect("https://google.se"); } 这

因此,我尝试创建一个登录页面,并创建了一个表单,该表单将发布到控制器内的操作

这就是控制器的外观,非常简单,仅用于测试目的

public ActionResult Verify(User account)
{
    var s = account;
    if (db.Users.Any(o => o.Username == ""))
    {
        // Match!
    }
    return Redirect("https://google.se");
}
这是HTML


当我单击Login时,它确实会调用Verify操作,但是我传递给account所有属性的参数都为null,我不确定原因。

您并不是真正提交表单,除非某个javascript事件为您这样做

试着改变

<a href="Verify" type="submit" class="btn btn-primary btn-user btn-block" >
    Login
</a>
改为单击“提交”按钮

<button type="submit" class="btn btn-primary btn-user btn-block" >
     Login
</button>
当您使用链接时,您发出的GET请求不会将表单数据发布到控制器,在chrome中,您可以看到自己在developer tools/network中打开该链接,然后单击Login,这将导致验证请求显示在请求列表中

如果您真的想使用链接而不是提交按钮,那么您可以添加一点javascript来提交表单,方法是添加事件处理程序或直接从链接的onClick方法提交表单

<a href="Verify" onclick="document.getElementById('form1').submit();" class="btn btn-primary btn-user btn-block" >
    Login
</a>

哦!我不知道链接会算作get请求而不是post,它需要是post请求才能发布数据,对吗?没错,get不会从表单中收集数据,并将其作为查询参数添加到请求中。提交表单总是会导致一个post请求,其中所有表单值都在请求正文中。如果您没有告诉我链接是get请求而不是post,我可能会花很多时间来弄清楚,非常感谢!:-