Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何创建MVC用户控件_Asp.net Mvc_User Controls_Repeater - Fatal编程技术网

Asp.net mvc 如何创建MVC用户控件

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.NET MVC项目中创建用户控件。我基本上有一些格式化的数据,我想放在一个中继器里。在标准ASP.NET中,我会像这样填充控件:

 <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>