1

リストに基づく部分ビューを実装し、これをページに複数回実装する最善の方法についてアドバイスが必要です。

したがって、これを考えると:

<div>
 <b>Contact Name</b>
 @Html.TextBoxFor(m => m.ApplicationDetail.Name, new { @class = "formInputSmall" })@Html.ValidationMessageFor(model => model.ApplicationDetail.Name)          
 <b>Current Address</b>
   @Html.Partial("_address", Model.Address)
 <b>Previous Address</b>
    @Html.Partial("_address", Model.Address)
</div>

ヘッダー レコードがあり、複数のアドレスを含めることができる複雑なモデルがあります。

モデル ページ クラス

public class EntityDetails
{
    public ApplicationDetail ApplictaionDetails{ get; set; }
    public List<Address> Address { get; set; }
}

アドレスの一部

@model Application.Models.DataModels.Address
@Html.TextBoxFor(m => m.AddressLine1, new { @class = "formInputSmall" })@Html.ValidationMessageFor(model => model.AddressLine1)
@Html.TextBoxFor(m => m.AddressLine2, new { @class = "formInputSmall" })@Html.ValidationMessageFor(model => model.AddressLine2)
@Html.TextBoxFor(m => m.City, new { @class = "formInputSmall" })@Html.ValidationMessageFor(model => model.City)
@Html.TextBoxFor(m => m.Postcode, new { @class = "formInputSmall" })@Html.ValidationMessageFor(model => model.Postcode)
@Html.DropDownListFor(m => m.Country, new SelectList(ViewBag.CountryType, "ID", "Value"), "Select...", null)@Html.ValidationMessageFor(model => model.Country)

アドレステーブルには異なるタイプが保持されているため、異なるタイプのアドレスを区別する方法がわかりません。

私が達成しようとしていることを実装するための最良の方法について、いくつかの提案をいただけますか。引き裂かれることには何の異論もありません。

4

2 に答える 2

0

これには、パーシャルではなく EditorTemplates を使用する必要があります。EditorTemplates は、この (および同様の) 問題のために特別に設計されています。

http://blogs.msdn.com/b/nunos/archive/2010/02/08/quick-tips-about-asp-net-mvc-editor-templates.aspx

パーシャルは、既定では、ネストされたフォーム フィールドをフォーマットしてモデル バインダーによって適切に読み取られるようにする問題の多くに対処しません。パーシャルでそれを行うことができますが、追加の作業を行う必要があります。EditorTemplates がそれを処理します。

于 2013-07-12T16:54:10.700 に答える
0
foreach (var address in Model.Address)
{
    @Html.Partial("_address", address)
}

必要なのはそれだけではありませんか?アドレスが異なるタイプであるとはどういう意味ですか? 現在のアドレスと以前のアドレスとその他のアドレスの種類を意味する場合は、さまざまなアドレスの種類があり、Enumアドレスの種類を導入する必要があると言います。

public Enum AddressTypes
{
    Current,
    Previous
}

そして、これを次のようにクラスEnumのプロパティとして使用します。Address

public class Address
{
    public AddressTypes AddressType {get; set;}
}

このようにして、部分ビューでさまざまな住所タイプを区別できます。

于 2013-05-23T13:05:46.150 に答える