gpt4 book ai didi

c# - View 正在将匿名类型传递给 Controller

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

我使用的是 C# 和 MVC 5,但出于某种原因,我的 View 将匿名类型传递回 Controller ,它对此并不满意。具体报错是:

An exception of type 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException' occurred in System.Core.dll but was not handled in user code

Additional information: 'object' does not contain a definition for 'Id'

这是具体的 Controller 函数签名:

[HttpPost, ParameterBasedOnFormName("save-continue", "continueEditing")]
public ActionResult TaskEdit(dynamic model, bool continueEditing)

当我尝试在该函数中引用 model.Id 时发生错误。 View 的开头是这样的:

@model ProjectModelShopModel
// ...
@using (Html.BeginForm(null, null, FormMethod.Post, Model))
{
// code
}

如何解决这个错误?如有必要,我可以提供更多代码。

编辑:我在 TaskEdit 中使用动态类型,因为三个 View 调用该函数,每个 View 具有不同的模型。每个的功能几乎相同。我不使用继承,因为我早期搞砸了太多,现在要修复它需要方式太多的工作。

最佳答案

This post确认(无来源)我的 guess默认的 modelbinder 不能真正使用 dynamic 参数。

默认模型绑定(bind)器查找参数类型的现有属性(dynamic 很少),然后尝试将发布的字段映射到这些属性。

解决方法是使用 public ActionResult TaskEdit(FormCollection formCollection)并在你的 Controller 中填写你的模型,或者到use a custom modelbinder .

关于c# - View 正在将匿名类型传递给 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32403644/

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