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,我可能会花很多时间来弄清楚,非常感谢!:-