如何在ASP.NET MVC同一页面中复用同一个.ascx文件创建多个实例?

2026-03-30 13:141阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计498个文字,预计阅读时间需要2分钟。

如何在ASP.NET MVC同一页面中复用同一个.ascx文件创建多个实例?

在ASP.NET MVC页面中,我创建了两个Address.ascx控件实例。为Shipping Address和Billing Address,使用Html.RenderPartial方法分别渲染。代码如下:

Shipping Address%=Html.RenderPartial(Controls/AddressControl) %>Billing Address%=Html.RenderPartial(Controls/AddressControl) %>

我在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项目数组,但我想知道是否有一个稍微更优雅的解决方案.

PS.我确信之前已经多次询问过,但我似乎无法用正确的搜索词来表达.如果你知道欺骗,请链接这个问题!

您可以拥有ViewModel

OrderCheckoutViewModel { public Address ShippingAddress{get;set;} public Address BillingAddress{get;set;} }

如果具有该表单,则formelements的值将映射到ViewModel的右侧成员

<input type="text" name="ShippingAddress.StreetAddress1"><input>

从StreetAddress1到ShippingAddress.StreetAddress1没有简单而优雅的方法.
我的地址模型有以下形式:

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

我将InstanceName设置为属性的名称(ShippingAddress).

然后以这种形式定义表单元素

<input type="text" name="<%=Model.InstanceName%>.StreetAddress1"><input>

ascx的地方看起来并不常见.任何理由你不要把它放在共享和访问它

<% Html.RenderPartial("AddressControl",Model.ShippingAddress); %>

如何在ASP.NET MVC同一页面中复用同一个.ascx文件创建多个实例?

本文共计498个文字,预计阅读时间需要2分钟。

如何在ASP.NET MVC同一页面中复用同一个.ascx文件创建多个实例?

在ASP.NET MVC页面中,我创建了两个Address.ascx控件实例。为Shipping Address和Billing Address,使用Html.RenderPartial方法分别渲染。代码如下:

Shipping Address%=Html.RenderPartial(Controls/AddressControl) %>Billing Address%=Html.RenderPartial(Controls/AddressControl) %>

我在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项目数组,但我想知道是否有一个稍微更优雅的解决方案.

PS.我确信之前已经多次询问过,但我似乎无法用正确的搜索词来表达.如果你知道欺骗,请链接这个问题!

您可以拥有ViewModel

OrderCheckoutViewModel { public Address ShippingAddress{get;set;} public Address BillingAddress{get;set;} }

如果具有该表单,则formelements的值将映射到ViewModel的右侧成员

<input type="text" name="ShippingAddress.StreetAddress1"><input>

从StreetAddress1到ShippingAddress.StreetAddress1没有简单而优雅的方法.
我的地址模型有以下形式:

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

我将InstanceName设置为属性的名称(ShippingAddress).

然后以这种形式定义表单元素

<input type="text" name="<%=Model.InstanceName%>.StreetAddress1"><input>

ascx的地方看起来并不常见.任何理由你不要把它放在共享和访问它

<% Html.RenderPartial("AddressControl",Model.ShippingAddress); %>

如何在ASP.NET MVC同一页面中复用同一个.ascx文件创建多个实例?