Asp.net mvc 如何创建MVC用户控件
我正在尝试在ASP.NET MVC项目中创建用户控件。我基本上有一些格式化的数据,我想放在一个中继器里。在标准ASP.NET中,我会像这样填充控件:Asp.net mvc 如何创建MVC用户控件,asp.net-mvc,user-controls,repeater,Asp.net Mvc,User Controls,Repeater,我正在尝试在ASP.NET MVC项目中创建用户控件。我基本上有一些格式化的数据,我想放在一个中继器里。在标准ASP.NET中,我会像这样填充控件: <asp:Repeater ID="MyRepeater" runat="server" DataSourceID="SQLDataSource" DataMember="DefaultView"> <ItemTemplate>
<asp:Repeater ID="MyRepeater" runat="server"
DataSourceID="SQLDataSource" DataMember="DefaultView">
<ItemTemplate>
<uc1:Control ID = "MyControl" runat="server"
Field1='<%#Eval("[\"Field1\"]") %>' Field2='<%#Eval("[\"Field2\"]") %>' />
</ItemTemplate>
</asp:Repeater>
一个描述如何添加一个的问题,但随后想知道在MVC中是否有更好的方法(我找不到任何合适的文章来说明推荐的方法)。您不需要代码隐藏文件。为PartialView(ViewUserControl)创建一个模型,并将其绑定到控件
MVC的目的是让控件远离视图,这应该是愚蠢的。。。或者至少不聪明。控制器应将对象推送到包含已具备视图所需一切的模型对象的位置
声明您的型号
public class MyModel
{
public IList<MyPartialView> Controls { get; set; }
}
public class MyPartialView
{
public string Field1 { get; set; }
public string Field2 { get; set; }
}
创建视图强键入到MyModel
<%@ Page Language="C#" Inherits="ViewPage<MyModel>" %>
<% foreach(MyOtherPartialView partial in Model.Controls) { %>
<%=Html.RenderPartial("MyPartialView", partial) %>
<% } %>
这回答了你的问题吗?你是说数据访问应该在控制器中吗?我的印象是这应该在模型中。控制器应该将数据推送到模型中,并从模型中提取数据。模型应该是哑的。如果您正在进行n层开发,则控制器不应直接处理数据访问。控制器可以与业务层通信,业务层从数据访问层请求数据,然后将原始数据交回,业务层将原始数据转换为控制器可用的对象。
<%@ Page Language="C#" Inherits="ViewPage<MyModel>" %>
<% foreach(MyOtherPartialView partial in Model.Controls) { %>
<%=Html.RenderPartial("MyPartialView", partial) %>
<% } %>
<%@ Control Language="C#" Inherits="ViewUserControl<MyPartialView>" %>
<div>
<%=Model.Field1 %> - <%=Model.Field2 %>
</div>