レンダリングパーシャルの問題が発生しています。私は周りを見回し、部分的なビューへのパスを最初のパラメータとして渡し、モデルを2番目のパラメータに渡すことになっていることがわかりました。私は何も吹き飛ばすことなく、ページを取得していますが、部分的なビューは私の期待された結果を出力していない、私はその部分的にブレークポイントを打つことはできません(ループを使用している)。私はそれにデータを含むモデルを渡していることを確認しましたが、部分的にはヒットしないようです。ここに私のコントローラとパーシャルがあります。レンダリング一部がレンダリングされていません。.NET mvc
DataBass db = new DataBass();
public ActionResult Address()
{
Models.ViewModels.CheckoutViewModel x = new Models.ViewModels.CheckoutViewModel();
if (User.Identity.IsAuthenticated)
{
using(DataBass oDB = new DataBass())
{
var Customer = oDB.Customers.First(c => c.Email.ToLower() == User.Identity.Name.ToLower());
var AvailableAddresses = oDB.AddressBooks.Where(ab => ab.CustomerID == Customer.ID).ToList();
x.CustomerID = Customer.ID;
x.HasExistingAddresses = (AvailableAddresses.Count > 0 ? false : true);
x.AvailableAddresses = AvailableAddresses;
}
//var UserAddresses = db.AddressBooks.Where(a => a.Customer.Email == User.Identity.Name);
//ViewBag.Addresses = UserAddresses;
return View("Shipping", x);
}
else
return View("Index");
}
ここで私は問題を抱えています。これはヒットしないことです。
@model IEnumerable<Models.AddressBook>
<h2>AddressBook</h2>
<table class="table">
<tr>
<th>
Address 2
</th>
<th>
Address 1
</th>
<th>
City
</th>
<th>
State
</th>
<th>
Postal Code
</th>
<th></th>
</tr>
@foreach (var item in Model)
{
var states = (List<Models.State>)ViewBag.States;
<tr>
<td>
@Html.DisplayFor(modelItem => item.Address1)
</td>
<td>
@Html.DisplayFor(modelItem => item.Address2)
</td>
<td>
@Html.DisplayFor(modelItem => item.City)
</td>
<td>
@states.FirstOrDefault(x => x.ID.ToString() == item.StateID).Name
</td>
<td>
@Html.DisplayFor(modelItem => item.Zipcode)
</td>
<td>
@Html.ActionLink("Choose this one","", new { id = item.ID}, new { @class="button"})
@*@Html.ActionLink("Edit", "EditAddress", new { id = item.ID }, null) |
@Html.ActionLink("Delete", "DeleteAddress", new { id = item.ID }, null)
@*<a href="/Account/EditAddress/@item.AddressBook_ID">Edit</a> |
<a href="/Account/DeleteAddress/@item.AddressBook_ID">Delete</a>
@Html.ActionLink("Edit", "EditAddress", new { id = item.ID }, null) |
@Html.ActionLink("Edit", "EditAddress", "Account",new { id=item.AddressBook_ID }, htmlAttributes: null) |
@Html.ActionLink("Delete", "DeleteAddress", new { id = item.ID }, null)*@
</td>
</tr>
}
</table>
そしてここで上記に示す部分ChooseExistingAddress.cshtmlへれるrenderPartialメソッドを呼び出している私の見解です。
@model Models.ViewModels.CheckoutViewModel
@{
ViewBag.Title = "Shipping Selection";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Shipping</h2>
@if (Model.HasExistingAddresses)
{
Html.RenderPartial("~/Views/Checkout/ChooseExistingAddress.cshtml", Model.AvailableAddresses);
}
else
{
Html.RenderPartial("~/Views/Checkout/AddNewShippingAddress.cshtml");
}
変更「〜/ビュー/チェックアウト/ ChooseExistingAddress.cshtml」が「ChooseExistingAddress」、「チェックアウト」 – JB06
はHtml.RenderPartial(「ChooseExistingAddress」にそれを修正、モデル:ちょうどブール式の結果に設定します.AvailableAddresses);私はまだ同じ結果を得ています。ビュー、コントローラ、モデルのオーバーロードはありません。 – ddeamaral
部分的に見ると、無効なひげ剃りのコメントがあり、最初の編集リンクの隣にオープニングコメントがありますが、一致する終了タグはありません – JB06