gpt4 book ai didi

c# - 将模型发布到 MVC ActionResult

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

我有一个带有 [HttpGet] 的 ASP.net 应用程序,用于在名为 Students 的 Controller 上查看名为“Create”的 ActionResult

然后我的“学生”被发布到以下 Controller 。

[HttpPost]
public async Task<ActionResult> Create(Student student)
{
Student.Add(student);
if (ModelState.IsValid)
{
var result = db.Students.Add(student);
await db.SaveChangesAsync();
return Details(result);
}
return View(new CreateStudent());
}

return Details(result); 是我感兴趣的行。

之前,我在 RedirectToAction 中传递了结果。 Id 属性并使用 GET 请求查询数据库。

但是,我不想使用像“students/details/id=123”或“students/details/123”这样的 URL 我想发布我的模型到 Controller “学生/详细信息”

var 结果是单个“Student”,而我的“Details”ActionResult 如下所示:

[HttpPost]
public async Task<ActionResult> Details(Student student)
{
//
}

但是 return Details(result); 不起作用,我收到一条错误消息:

“传入字典的模型项的类型为‘LinkApp.Models.Student’,但该字典需要一个类型为‘LinkApp.Models.DTOs.CreateStudent’的模型项。”

但我相信这是因为我的 URL 从未转到“/Students/Details”,我的 URL 仍然显示“/Students/Create”

感谢任何帮助。再说一次,如果不清楚,请要求澄清

谢谢

由于我不是很清楚而编辑 ;)

最佳答案

所以我对您要实现的目标有点困惑。

这是我收集到的信息:您想POST 数据。现在您有一个 GET 方法。您可以将 GET 方法视为检索的方法,将 POST 方法视为提供的方法。

因此您的GET 方法不应尝试POST 任何内容。

您的 GET 方法看起来应该是一个 POST,因为您正试图将数据“提供”给某物,而不是get 数据。

[HttpPost]
public async Task<ActionResult> Create(Student student)
{
Student.Add(student);
if (ModelState.IsValid)
{
var result = db.Students.Add(student);
await db.SaveChangesAsync();

return View("Details", result);
}

return View(); //You should add a property to the model called ErrorMessage or something like that, then you could do student.ErrorMessage = "Model state was not valid";, then you could do return View(student); and in the view you could do something like @if (Model.ErrorMessage != null) { @Html.DisplayFor(m=>m.ErrorMessage); }
}

这就是您的帖子的样子,您正在将 Student 模型保存到数据库并返回到 View 。

现在你的 GET 应该是这样的:

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

编辑:

如果您希望您的帖子执行我在上面评论中留下的错误消息,您只需在第二个 return View();

上方执行此操作
student.ErrorMessage = "Model state was not valid;" //Or whatever you want to say
return View(student);

那么在你看来你会有这样的东西:

@if (student.ErrorMessage != null)
{
@Html.DisplayFor(m => m.ErrorMessage);
}

关于c# - 将模型发布到 MVC ActionResult,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34363005/

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