24

我正在尝试在 acsx 文件中使用 Html.RenderPartial ,但出现错误:

编译器错误消息:CS1973:“System.Web.Mvc.HtmlHelper”没有名为“RenderPartial”的适用方法,但似乎具有该名称的扩展方法。扩展方法不能动态调度。考虑强制转换动态参数或在没有扩展方法语法的情况下调用扩展方法

<a href="/projects/<%=project.Id %>">
  <% Html.Label("fdf"); %>
  <% Html.RenderPartial("ProjectName", Model.Id); %></a></li>
 <%} %>

但是我已经导入了必要的命名空间,所以它不会出错

<% Html.Label("fdf"); %>

有什么方法可以在 ascx 文件中使用 Html.RenderPartial 吗?

4

3 回答 3

41

编译器无法选择正确的方法,因为您的模型是dynamic. 将调用更改为:

<% Html.RenderPartial("ProjectName", (int)(Model.Id)); %>

或任何其他数据类型 Id 是。

于 2010-09-29T14:29:19.660 回答
8

万一其他人犯了同样的错误,我做了:

@Model MyViewModel

这会将您的模型视为动态的

@model MyViewModel

这是一个正确的强类型视图。注意没有大写!

请注意,这是 Razor,与原始问题不同。

于 2012-06-05T10:55:29.150 回答
2

我发现通过的唯一方法,例如。一个 IEnumerable 是创建一个局部变量并传入这个变量。例如 @{ IEnumerable<Demo.Models.Friend> friends = Model.Friends; Html.RenderPartial("_FriendsList", friends); }

Html.RenderPartial("_FriendsList", (IEnumerable<Demo.Models.Friends>)(Model.Friends));不工作!

于 2011-11-29T12:37:33.023 回答