私はこれについて髪を引っ張っていて、自分のアプローチをごまかし始める前にガイダンスを探しています.
これが私が持っているものです:
スニペットを表示
<td>@Html.ActionLink("More Details", "Index", new { id = product.ProductId })</td>
<td>@Html.ActionLink("Compare", "Compare", new { id = product.ProductId, compare = true })</td>
コントローラーのスニペット
public ActionResult Index(FormCollection values)
{
// Does stuff, works
}
public ActionResult Index(int productId)
{
// Does stuff, works
}
さて、ここに私の問題があります。インデックス機能は、POST からフォームへの両方で取得され、[詳細] ActionLink がクリックされます。これはうまくいきます。
ここで、「比較」を機能させたいと思います。同じページに表示し、比較した製品のリストを保持します。これで問題ありません。しかし、同じビュー/ページでその比較機能を取得するにはどうすればよいですか?!
私はもう試した:
public ActionResult Compare(int productId)
{
}
しかし、Compare.cshtml が必要なため、明らかにうまくいきません。ViewModel を変更して、新しく比較した製品で返すようにしたいので、元のビューからこれを行うことができます。
@foreach(var products in Model.ComparedProducts)
私がこれをしているのを見ることができる唯一の方法は、「それをごまかす」ことです:
public ActionResult Index(int productId = 0, bool compare)
{
}
同じページに多くの機能があると、手に負えなくなる可能性があります.
ここで私が見逃している明らかな何かがありますか?
ああ、AjaxLink オプションは私には適していません。これは、ポストバック (Progress Enhancement とすべてのジャズ) を介して動作する必要があるサイトの一部であるためです。