代码之家  ›  专栏  ›  技术社区  ›  balexandre

将复杂对象从视图传递到控制器:一个对象始终为空

  •  5
  • balexandre  · 技术社区  · 14 年前

    我将一个复杂的对象作为 Model View 作为

    alt text

    null 而其他复杂类型通常通过

    alt text

    我的观点是默认的 Edit 强类型视图

    alt text

    ?

    这个 错误说明

    从类型“System.String”到类型“Julekalender.Database.CalendarInfo”的参数转换失败,因为没有类型转换器可以在这些类型之间进行转换。

    其他类型的我也一样? 怎么样 它自动转换?


    我已经添加了3个字段(因为T4模板没有附加这些类型),但是当 POST 惯性导航与制导

    <div class="editor-field">
        <%: Html.TextBoxFor(model => model.Calendar.Guid)%>
    </div>
    

    alt text


    甚至将操作重命名为

    [HttpPost]
    public ActionResult General2(GeneralInfo model)
    

    同样的错误

    alt text

    1 回复  |  直到 14 年前
        1
  •  2
  •   Darin Dimitrov    14 年前

    确保使用此向导时,视图中为 属性,以便在发布表单时将其发送到控制器操作。我不确定是不是这样(还没有验证向导是否为复杂对象执行此操作,我从未使用过此向导)。

    <input type="text" name="Calendar.Prop1" value="prop1 value" />
    <input type="text" name="Calendar.Prop2" value="prop2 value" />
    ... and so on for each property you expect to get back in the post action
    ... of course those could be hidden fields if you don't want them to be editable
    

    更新:

    calendar 在action方法和对象中 Calendar 令人困惑。尝试重命名它:

    [HttpPost]
    public ActionResult General2(string calendarModel, GeneralInfo model)
    

    也不要忘记在视图中重命名它。