开发者

Passing Complex object from View to Controller: one object is always null

I'm passing a complex object as a Model to the View as

Passing Complex object from View to Controller: one object is always null

but when I get the Model back from the View, one particular object comes always null while 开发者_开发技巧other complex types are normally passed through

Passing Complex object from View to Controller: one object is always null

my View is the default Edit Strongly Typed View

Passing Complex object from View to Controller: one object is always null

What am I missing?

The ModelState Error says

The parameter conversion from type 'System.String' to type 'Julekalender.Database.CalendarInfo' failed because no type converter can convert between these types.

Why don't I get the same for the other types? How is it automatically converted?


I have added 3 fields (as the T4 template does not append this types) but I still get null when POSTing

The green boxed below is the field

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

Passing Complex object from View to Controller: one object is always null


Even renaming the Action to

[HttpPost]
public ActionResult General2(GeneralInfo model)

gives the same error

Passing Complex object from View to Controller: one object is always null


Make sure that when you use this wizard there are input fields generated in the view for each property of the Calendar object so that when you post the form they will be sent to the controller action. I am not sure this is the case (haven't verified if the wizard does it for complex objects, I've never used this wizard).

In the resulting HTML you should have:

<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

UPDATE:

The problem comes from the fact that you have a string variable called calendar in your action method and an object which has a property called Calendar which is confusing. Try renaming it:

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

Also don't forget to rename it in your view.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜