1

私がやろうとしているのは、クリックされたアイテムを編集のためにコントローラーに渡すことですが、コントローラーに渡すことができるのは文字列だけです。

見る:

foreach (MenuItemViewModel menuitem in category.MenuItemList)
{
  <span class="MenuItemTitel">
     @if (IsAdmin)
     {
       <span class="AdminSpan">
          @Html.ActionLink("Edit", "EditPage", "Admin", new { name = menuitem.Title })
       </span>
     }
      @menuitem.Title
  </span> 
}

コントローラ:

public ActionResult EditPage(MenuItemViewModel MenuItem) {}
4

3 に答える 3

3

この@Html.ActionLink()メソッドは、指定されたコントローラー/アクションへの URL リンクを生成します。したがって、リンクの URL に含めることができるパラメーターのみを含めることができます。そのため、URL でオブジェクトを渡すことはできません。

サーバーに保存されているオブジェクトへの参照を渡す必要がある場合は、リンクのパラメーターを設定して、サーバーに保存されているオブジェクトへの参照を指定してみてください。これは、アクションによって取得できます (例:問題の menuItem の ID)。

のパラメーターは、ActionLink上記の関数呼び出しで 3 番目の項目として渡したコレクションを通じて設定されます。/Admin/EditPage/?name=XXXデフォルトのルーティングを想定すると、XXX が の値であるようなアドレスが得られますmenuitem.Title。ここに何か他のものを含めるとitemId = menuitem.Id、生成された URL にクエリ文字列パラメーターとしてこれが追加され、このリンクのターゲットであるアクションにアクセスできるようになります。

于 2013-02-26T19:09:24.883 に答える
0

helpt でオブジェクトを渡しまし@Html.Action()た。以下のコードを参照してください。

@Html.ActionLink("Lista Valores", "Lista", "RandomName",
new {
    Id = @ViewBag.Id,
    Name = "fdsfsadf",
    LastName = @ViewBag.LastName,
    Breed = @ViewBag.Breed,
    System = ViewBag.sys
}, null)

コントローラ:

public ActionResult Lista(CharNames character)
{
    return View(character);
}

意見:

<p>@Html.LabelFor(x => x.Id) @Model.Id</p>
<p>@Html.LabelFor(x => x.Name) @Model.Name</p>
<p>@Html.LabelFor(x => x.LastName) @Model.LastName</p>
<p>@Html.LabelFor(x => x.Breed) @Model.Breed</p>
<p>@Html.LabelFor(x => x.System) @Model.System</p>
于 2016-02-14T13:14:00.437 に答える