ここではテーブルにいくつかの行があり、この場合はアイテムと呼ばれる商品のフラグをリストしています。フラグをオンまたはオフ(yes/no)として編集する場合は、クリックしたアイテムのフラグを識別する他の方法がないため、アイテム全体にアクセスする必要があります。ActionLinkからASP.NET MVCコントローラにアイテムを送信するには?
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
<ul>
@foreach (var flag in item.Flags)
{
<li>
@Html.DisplayFor(modelItem => flag.Name) |
@(flag.Enabled ? "Yes" : "No") |
@Html.ActionLink("Edit", "FlagEdit", new { flagId = flag.Id, itemId = item.Id })
</li>
}
</ul>
</td>
これが明確でない場合は、質問してください。私はitemIdを送信しようとしていますが、フラグforeach内にいるため、私はそれを保持することはできません。
paramsがnullでない場合に最初に取得すると、チェックに失敗します。
[ActionName("FlagEdit")]
public async Task<ActionResult> EditFlagAsync(string flagId, string itemId)
{
if (flagId == null || itemId == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Item item = await DocDBRepo<Item>.GetItem(itemId);
if (item == null)
{
return HttpNotFound();
}
//do update
return View(item);
}
私は検索を試みましたが、適切なキーワードを検索していない可能性があります。誰でも助けてくれますか?
まさにあなたの問題は何ですか? itemIdが制御メソッドに到達していませんか?あなたのActionLinkはうまく見えます –
コントローラとそれが失敗した正確なポイントで更新しました。 flagIdがnullではないので、actionLinkが正常であることを知っています。私は外foreachからアイテムを送ることができません –