Asp.net mvc 3 为什么可以';我是否在用户控件中使用ASP.NETMVC3Razor引擎(使用新的@语法)?

Asp.net mvc 3 为什么可以';我是否在用户控件中使用ASP.NETMVC3Razor引擎(使用新的@语法)?,asp.net-mvc-3,Asp.net Mvc 3,我正在创建一个UserControl,它将从XML文件中读取数据并填充列表框。我已打开.ascx文件,并想使用@foreach(etc…)但这无效 有人能解释为什么这是不可能的吗?或者确认MVC 3中是否不推荐使用UserControls?.ascx是WebForms@是Razor,这意味着如果您想编写@foreach(…)您需要一个Razor模板:Foo.cshtml: @model IEnumerable<AppName.Models.Foo> @foreach (var ite

我正在创建一个
UserControl
,它将从XML文件中读取数据并填充
列表框
。我已打开
.ascx
文件,并想使用
@foreach(etc…)
但这无效


有人能解释为什么这是不可能的吗?或者确认MVC 3中是否不推荐使用
UserControl
s?

.ascx
是WebForms
@
是Razor,这意味着如果您想编写
@foreach(…)
您需要一个Razor模板:
Foo.cshtml

@model IEnumerable<AppName.Models.Foo>
@foreach (var item in Model)
{
    ...
}

因此,一般来说,在MVC3中使用
用户控件
不是一个好主意?@Ardman,服务器端控件不是一个好主意。就视图引擎而言,您可以在ASP.NET MVC 3中很好地使用WebForms或Razor或两者。因此,您可以使用WebForms usercontrol,但要确保它继承自
System.Web.Mvc.ViewUserControl
。就Razor视图引擎而言,视图部分(aspx和ascx)之间实际上没有区别。那么控件的事件也会被触发吗?即使它在另一个页面上呈现,也会触发控件的OnLoad、buttonclick事件?
<%@ Control 
    Language="C#" 
    Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<AppName.Models.Foo>>" 
%>
<% foreach(var item in Model) { %>
    ...
<% } %>