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

标签 asp.net-mvc modelbinders

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

相关文章:

c# - 使用现有 Webforms 站点运行 MVC

asp.net-mvc - ASP.NET MVC 框架中的 MVVM 和 ModelBinders

c# - 在 Binder 中解析日期的最佳方法是什么

asp.net-mvc - 如果用户在 ASP.NET MVC 中匿名,则重定向到自定义 Windows 身份验证登录页面

c# - 具有从字符串到类型的隐式转换的模型绑定(bind)属性

asp.net-mvc - Asp.Net MVC 2 - 遍历模型绑定(bind)器中的表单值

c# - 将数据绑定(bind)到 Asp.net MVC 中的现有对象

asp.net-mvc - Html.ValidationSummary 和 Ajax.BeginForm 最佳实践

c# - 如果您的 MVC 依赖项解析器已设置为使用 ninject,是否有任何理由使用 SignalR.Ninject?

asp.net - ASP.NET View 编译的频率和时间