gpt4 book ai didi

c# - 将模型对象从 View 发送到 Controller 方法 ASP.NET MVC C#

转载 作者:太空宇宙 更新时间:2023-11-03 19:45:23 25 4
gpt4 key购买 nike

我知道有很多关于此的问题,但在我见过的一个问题中(我现在已经搜索了两个小时),我是否看到在 Razor View (.cshtml) 中写什么文件)来触发与将模型对象保存到数据库相关联的 Controller 方法,或者该对象的传递方式。

所以想做一个简单的注册页面。我创建了 Users 模型,创建了与模型关联的 View ,名为 Register.cshtml,我通过具有 Register 方法的帐户 Controller 访问 View :

public ActionResult Register()
{
return View();
}

我遵循的教程使用在为用户模型创建 View 时在 View 中生成的默认代码。

<input type="submit" value="Create" class="btn btn-default" />

并说明您应该在帐户 Controller 中创建一个方法,如下所示:

 public ActionResult Register(User obj)
{
if (ModelState.IsValid)
{
DatabaseEntities db = new DatabaseEntities();
db.Users.Add(obj);
db.SaveChanges();
}
return View(obj);
}

(其中 DatabaseEntities 是我的数据库的名称)

这不起作用,因为在运行应用程序时,它表示它不知道要触发这两种方法中的哪一种。

System.Web.Mvc.ActionResult Register() 类型 Biblioteca.Controllers.AccountControllerSystem.Web.Mvc.ActionResult 在类型 Biblioteca.Controllers.AccountController 上注册(Biblioteca.Models.User)

这是我得到的错误。

我想到了重命名第二个方法RegisterPost(User obj),但是我不知道如何调用带有参数的方法,因为在razor View 中,我不知道这是在提交表单时创建的对象。

我可以使用 @Html.ActionLink(),但我不知道如何发送对象。我实际上尝试为提交按钮添加一个 onclick 方法,如下所示:

 onclick="location.href='@Url.Action("RegisterPost", "Account")'"

但是在填写表单并单击提交按钮后,没有任何反应。没有任何内容被插入到数据库中。

我现在不知道该怎么办。请帮忙。

最佳答案

将属性 [HttpGet] 添加到第一个操作并将 [HttpPost] 添加到第二个操作:

[HttpGet]
public ActionResult Register()
{
return View();
}

[HttpPost]
public ActionResult Register(User obj)
{
if (ModelState.IsValid)
{
DatabaseEntities db = new DatabaseEntities();
db.Users.Add(obj);
db.SaveChanges();
}
return View(obj);
}

您可以在 MSDN 上阅读更多内容

关于c# - 将模型对象从 View 发送到 Controller 方法 ASP.NET MVC C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46367035/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com