我已经创建了一个Razor Web应用程序,并将Identity脚手架放入我的项目中,如下所述:
如下面的代码所示,我在主页上有一个表单,用于显示您是否尚未登录,并且需要将该表单数据转换为一种方法,以便我可以对其进行处理(涉及google -maps api,但我已经弄清楚了那一部分)
Index.cshtml.cs
<form asp-action="CheckUser">
<label for="Email" >Email address</label>
<input type="email" id="Email" class="form-control" placeholder="Email address" required autofocus>
<label for="Postcode" class="sr-only">Password</label>
<input type="text" id="Postcode" class="form-control" placeholder="Postcode" required>
<button class="btn btn-lg btn-primary btn-block" type="submit">Sign Up</button>
</form>
Index.cshtml
???
Index.cshtml.cs
<form method="post">
<label for="Email" >Email address</label>
<input type="email" id="Email" class="form-control" placeholder="Email address" required autofocus>
<label for="Postcode" class="sr-only">Password</label>
<input type="text" id="Postcode" class="form-control" placeholder="Postcode" required>
<button class="btn btn-lg btn-primary btn-block" type="submit">Sign Up</button>
</form>
Index.cshtml
{{1}}
对于第一次尝试,我期望它编写电子邮件和邮政编码以进行调试,但没有任何显示。
我无法弄清楚HTML POST表单是否足够尝试第二次尝试。
最终目标是从主页上的表单中获取该信息并对其进行处理(例如,将其写入Debug)
答案 0 :(得分:1)
好吧,您的主要问题是您的输入没有name
属性。虽然您可以只向它们添加一个name
属性,但是最好使用asp-for
来调用taghelper,这些标记除其他功能外还可以为您生成用于绑定的正确名称。
<input asp-for="Email" class="form-control" placeholder="Email address" required autofocus>
帮助者还将填写id
和type
属性。
除此之外,请勿使用Bind
。这是bad idea for a number of different reasons。相反,请使用视图模型,并且如果您只允许编辑Email
和PostalCode
,则只需将这些属性添加到视图模型类即可。发布后,将发布的视图模型中的值映射到您的实体的实例上(如果创建则为新实例,如果进行编辑则从数据库中刷新)。
答案 1 :(得分:0)
然后应该将那些内容放入包含列表中
public ActionResult CheckUser([Bind(Include = "Email, Postcode")] TestUser user)
{