gpt4 book ai didi

asp.net-mvc - 如何在 ASP.NET MVC 的同一页面中使用同一 .ascx 的两个实例?

转载 作者:行者123 更新时间:2023-12-01 10:15:35 25 4
gpt4 key购买 nike

我在 ASP.NET MVC 页面中有两个 Address.ascx 控件实例。

   <h1>Shipping Address</h1>
<% Html.RenderPartial("Controls/AddressControl"); %>

<h1>Billing Address</h1>
<% Html.RenderPartial("Controls/AddressControl"); %>

当然,使用完全像这样的代码,我最终会为地址中的每个字段得到相同的 ID。我可以轻松地将字符串附加到字段的 ID,这样我就有了 'Street1_billing''Street1_shipping',但我不清楚如何将其映射到模型。

将模型映射到项目数组(在本例中只有 2 个)的最佳解决方案是什么。我不知道有任何针对此的 ASP.NET“开箱即用”解决方案。

注意:这与 this question 略有相似我可以使用 this solution from Scott Hanselman ,但这不正是我想要的。在我的例子中,我知道我有两个项目,所以它本质上是一个 2 项目数组,但我想知道是否有稍微更优雅的解决方案。

附言。我敢肯定这已经被问过很多次了,但我似乎无法输入正确的搜索词。如果您知道欺骗,请链接此问题!

最佳答案

首先,向模型添加一个Address类。

public class Address
{
String StreetAddress1 { get; set }
String StreetAddress2 { get; set }
String City { get; set }
String State { get; set }
String Zip { get; set }
}


Address.ascx 中,您需要在顶部有一行继承 Address 模型,如下所示:

<%@ Page Language="C#" 
Inherits="System.Web.Mvc.ViewPage<MyProject.Models.Address>" %>


主视图的 Controller 中,将您的两个地址推送到 ViewData。

Address myAddressObject1 = new Address
{
AddressLine1 = "123 Anywhere Street",
// ..etc. Same with MyAddressObject2. Or, just populate from database.
}

ViewData["Address1"] = myAddressObject1;
ViewData["Address2"] = myAddressObject2;
//
// do other stuff as needed
//
Return View();


在您的主视图中,像这样调用您的两个地址 subview :

<%= Html.RenderPartial("Address", ViewData["Address1"]) %>
<%= Html.RenderPartial("Address", ViewData["Address2"]) %>

关于asp.net-mvc - 如何在 ASP.NET MVC 的同一页面中使用同一 .ascx 的两个实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1107547/

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