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

Asp.net mvc 2 将复杂对象从视图传递到控制器:一个对象始终为空,asp.net-mvc-2,viewmodel,parameter-passing,Asp.net Mvc 2,Viewmodel,Parameter Passing,我将复杂对象作为模型传递到视图作为 但是当我从视图中获取模型时,一个特定的对象总是null,而其他复杂类型通常是通过 我的视图是默认的编辑强类型视图 我错过了什么 ModelState错误显示 从类型“System.String”到类型“JuleCalender.Database.CalendarInfo”的参数转换失败,因为没有类型转换器可以在这些类型之间转换 为什么其他类型的我没有得到相同的它是如何自动转换的 我已经添加了3个字段(因为T4模板没有附加这种类型),但是当POSTing

我将复杂对象作为
模型
传递到
视图
作为

但是当我从视图中获取模型时,一个特定的对象总是
null
,而其他复杂类型通常是通过

我的视图是默认的
编辑
强类型视图

我错过了什么

ModelState错误显示

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

为什么其他类型的我没有得到相同的它是如何自动转换的


我已经添加了3个字段(因为T4模板没有附加这种类型),但是当
POST
ing时,我仍然会得到null

下面的绿色方框是场地

<div class="editor-field">
    <%: Html.TextBoxFor(model => model.Calendar.Guid)%>
</div>
给出了相同的错误


使用此向导时,请确保在视图中为日历对象的每个属性生成了输入字段,以便在发布表单时将这些字段发送到控制器操作。我不确定情况是否如此(尚未验证向导是否对复杂对象执行此操作,我从未使用过此向导)

在生成的HTML中,您应该具有:

<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

也别忘了在视图中重命名它。

我只对3个字段进行了重命名,但仍然没有得到对象,是否需要所有字段?不,一个字段就足以实例化对象。啊,我现在明白了。在操作方法中重命名此
calendar
变量,因为它会与
calendar
属性混淆。但这是我的路线
“{calendar}/{controller}/{action}/{id}”
,因此我可以传递一个日历名称(以便我知道所有操作属于哪个日历)像
http://domain/demo/Content/General2
我知道它要求提供名为
demo
的日历的一般内容。这就是问题所在。您只能有一个日历:-)作为替代,重命名GeneralInfo类中的calendar属性。但是。。。即使没有它,我也会得到同样的结果:(
<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
[HttpPost]
public ActionResult General2(string calendarModel, GeneralInfo model)