C# 如何简单地从索引页到索引类获取表单数据
我已经创建了一个Razor Web应用程序,并将身份构建到我的项目中,如下所述: 如下面的代码所示,我在主页上有一个表单,显示您是否未登录,我需要将该表单数据输入到一个方法中,以便我可以处理它(它涉及谷歌地图api,但我已经解决了这一部分)C# 如何简单地从索引页到索引类获取表单数据,c#,asp.net,asp.net-core,C#,Asp.net,Asp.net Core,我已经创建了一个Razor Web应用程序,并将身份构建到我的项目中,如下所述: 如下面的代码所示,我在主页上有一个表单,显示您是否未登录,我需要将该表单数据输入到一个方法中,以便我可以处理它(它涉及谷歌地图api,但我已经解决了这一部分) 我尝试创建一个新模型(TestUser),描述我想要捕获的数据,并将其用作此页面的模型,然后在Index.cshtml.cs页面中创建一个方法,将表单数据绑定到该模型,并将数据写入调试,但没有显示任何结果,需要进一步测试(在该方法中放置断点)显示它甚至从未
public ActionResult CheckUser([Bind(“Email”、“Postcode”)]TestUser)
{
System.Diagnostics.Debug.WriteLine(user.Email);
System.Diagnostics.Debug.WriteLine(用户邮政编码);
返回页首(“/索引”);
}
Index.cshtml
电子邮件地址
密码
注册
尝试#2
Index.cshtml.cs
???
Index.cshtml
电子邮件地址
密码
注册
在第一次尝试中,我希望它编写电子邮件和邮政编码进行调试,但什么也没有显示
我无法很好地理解HTML POST表单,无法尝试第二次尝试
最终目标是从主页上的表单中获取这些信息,并对其进行处理(例如,将其写入调试)然后您应该将这些信息放入包含列表中
public ActionResult CheckUser([Bind(Include = "Email, Postcode")] TestUser user)
{
嗯,您的主要问题是您的输入没有
name
属性。虽然您可以只为它们添加一个name
属性,但最好使用asp for
来调用标记帮助程序,这些标记帮助程序可以为您生成正确的绑定名称
<input asp-for="Email" class="form-control" placeholder="Email address" required autofocus>
助手还将填写id
和type
属性
除此之外,不要使用Bind
。这是一个好主意。相反,请使用视图模型,如果您只想允许编辑电子邮件
和后代码
,则只需将这些属性添加到视图模型类中。发布后,将发布视图模型中的值映射到实体的实例上(创建时为新,编辑时从数据库中提取新值)。您是否也需要name=“Email”和name=“Postcode”?我使用了您的第二个想法(我想)并为我现有的TestUser模型创建了一组新的Razor页面。如果我是正确的,那么生成的新页面将充当视图和控制器。然后,如果您没有登录,我让主页html中的代码将您重定向到其中一个视图。这是一个劣质的解决方案,但它是有效的。