Html.RenderParial,如何传递和使用模型?

时间:2010-10-28 15:41:20

标签: asp.net asp.net-mvc

我这样做:

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

我的模型有一个属性UserID

在我的部分中,我试试这个:

&lt;%= Model.UserID%&gt;

但是我收到了这个错误:

CS1061:'object'不包含'UserID'的定义,并且没有扩展方法'UserID'接受类型'object'的第一个参数可以找到(你是否缺少using指令或汇编引用?)< / p>

4 个答案:

答案 0 :(得分:2)

Blankman,

确保您的部分ascx文件根据主视图定义模型,即:

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

[edit] - 正如Stefanvds在下面提到的,如果您只需要模型中的id部分,那么将您的部分定义为:

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

这将是我认为的确定性:)

欢呼声

答案 1 :(得分:1)

确保在部分视图的顶部,您的Inherits标记的Control属性设置为您传入的模型类型:

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

答案 2 :(得分:0)

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

你的部分应该从这开始。

另外,如果你想发送整个模型,你不需要指定它。

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

或者您只想发送ID。

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

会产生标题

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

答案 3 :(得分:0)

部分视图上的模型类型和传递给Html.RenderPartial方法的模型应匹配。