次のシナリオがあります。現時点では、アドレスを含む人全体を外部サービスから取得しています (これは制御できません)。住所のインスタンスを 1 つだけ表示し、必要に応じて残りを表示するモデルを用意します。現時点では、アイデアを渡し、外部サービスに別のルックアップを行いますが、既にデータを持っているため、これは非効率的です。
アドレスのリストを送信するための最良の方法であるために、誰でも良い戦略を手伝ってもらえますか?
NB コードを簡略化して再入力したので、タイプミスは無視してください
モデル
public class PersonModel
{
Public int Id {get;set}
Public String Name {get; set;}
Public IEnumerable Address {get; set;}
// Single Address from the collection
Public DisplayAddress {get;set;}
}
public class AddressesViewModel
{
public IEnumerable<Address> Address { get; set; }
}
景色
@model PersonModel
<span>@Model.Name</span>
<ol>
@if (Model.DisplayAddress != null)
{
<li>@Model.DisplayAddress.Line1</li>
<li>@Model.DisplayAddress.Line2</li>
<li>@Model.DisplayAddress.Line3 </li>
<li>@Model.DisplayAddress.Town</li>
<li>@Model.DisplayAddress.County</li>
<li>@Model.DisplayAddress.PostalCode</li>
<li>@Model.DisplayAddress.Country</li>
}
</ol>
<a id="showalladdresses" title="View all addresses" href="#">View All Addressess</a>
@section scripts {
<script type="text/javascript">
$(function () {
$('#Modal').dialog({
autoOpen: false,
height: 600,
width: 800,
resizable: false,
modal: true
});
$('#showalladdresses').click(function () {
$('#Modal').load("@Url.Action("ViewAddresses", new { id = Model.Id })", function () {
$(this).dialog('open');
});
return false;
});
});
}
コントローラ
public ActionResult PersonBanner(long? Id)
{
if (!Id.HasValue)
return RedirectToAction("Index", "HomeController");
var result = new PersonModel();
result = unitOfWork.GetPersonSummaryDetails(Id.Value)
return View(result);
}
public ActionResult ViewAddresses(long Id)
{
var model = new AddressesViewModel
{
Address = unitOfWork.GetAddressesById(Id);
};
if (Request.IsAjaxRequest())
return PartialView(model);
return View(model);
}