views:

33

answers:

4

I am doing this:

<% Html.RenderPartial("SomePartial", Model); %>

My Model has a property UserID

In my partial I try this:

<%= Model.UserID %>

but I get this error:

CS1061: 'object' does not contain a definition for 'UserID' and no extension method 'UserID' accepting a first argument of type 'object' could be found (are you missing a using directive or an assembly reference?)

+2  A: 

Blankman,

Make sure your partial ascx file defines the model as per the main view i.e:

<%@  Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Your.Model>" %>

[edit] - as Stefanvds mentions below, if you only need the id portion from the model, then define your partial as:

<%@  Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<int>" %>

that would be the definitive i reckon :)

cheers

jim
A: 
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<DB.Models.TheModelYouWantToSend>" %>

your partial should start with this.

also, if you want to send the whole model, you dont need to specify it.

<% Html.RenderPartial("SomePartial"); %>

or if you would only like to send the ID.

<% Html.RenderPartial("SomePartial", Model.UserID); %>

which would make the header

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<int>" %>
Stefanvds
A: 

The model type on your Partial View and the model you pass in to Html.RenderPartial method should match.

Arief Iman Santoso
+1  A: 

Make sure that at the top of your partial view you have Inherits attribute of your Control tag set to the type of the model you're passing in:

Inherits="System.Web.Mvc.ViewUserControl<MyNamespace.MyStronglyTypedModel>"
Dave