我在 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/