gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 02:51:17 26 4
gpt4 key购买 nike

我正在尝试在 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 中,我没有标准的代码文件。我找到了 this描述如何添加一个的问题,但后来想知道在 MVC 中是否有更好的方法来做到这一点(我找不到任何说推荐方法的像样的文章)。

最佳答案

您不需要代码隐藏文件。为您的 PartialView (ViewUserControl) 创建一个模型并将其绑定(bind)到您的控件。

MVC 的重点是让控件远离 View ,这应该是愚蠢的......或者至少不聪明。您的 Controller 应该将一个对象推送到包含一个 Model 对象,该对象已经拥有 View 所需的一切。

声明您的型号

public class MyModel
{
public IList<MyPartialView> Controls { get; set; }
}

public class MyPartialView
{
public string Field1 { get; set; }
public string Field2 { get; set; }
}

在 Controller 中创建您的操作 通过 MyModel目的
public ActionResult Index()
{
MyModel model = new MyModel();
model.Controls.Add(new MyPartialView() { Field1 = "a", Field2 = "b" };
model.Controls.Add(new MyPartialView() { Field1 = "x", Field2 = "y" };
model.Controls.Add(new MyPartialView() { Field1 = "m", Field2 = "n" };

return View(model);
}

创建您的 View 强输入到 MyModel
<%@ Page Language="C#" Inherits="ViewPage<MyModel>" %>

<% foreach(MyOtherPartialView partial in Model.Controls) { %>
<%=Html.RenderPartial("MyPartialView", partial) %>
<% } %>

创建您的局部 View 强烈输入 MyPartialView
<%@ Control Language="C#" Inherits="ViewUserControl<MyPartialView>" %>

<div>
<%=Model.Field1 %> - <%=Model.Field2 %>
</div>

关于asp.net-mvc - 如何创建 MVC 用户控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4933755/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com