2012-01-15 2 views
3

Я назвал вид из другого методом Html.Action. Я хочу вызвать одно и то же действие с параметром Внутри дочернего представления, когда пользователь нажимает ссылку на действие.Actionlink для дочернего действия

Когда я пишу этот код, я получаю сообщение об ошибке:

Html.ActionLink("link", "Configure", new { id = 2 }) 

Действие «Настройка» доступен только по запросу ребенка.

Как я могу справиться с этой проблемой?

Edit: Постараюсь reexplain вопрос:

мой родительский взгляд ConfigureMethod.cshtml. Я называю ребенок вид ребенка так:

@Html.Action("Configure", "Payment"); 

Он идет к этому контроллеру и возвращает ActionResult (не PartialView) внутри ConfigureMethod зрения:

[ChildActionOnly] 
public ActionResult Configure() 
{ 

} 

вида внутри конфигурирования я сделать ссылку действия так:

Html.ActionLink("link", "Configure", new { id = x.Id }) 

Он должен идет к этому контроллеру:

[ChildActionOnly] 
public ActionResult Configure(int Id) 
{ 

} 

Однако, когда записывается атрибут childonly, он дает ошибку. Когда я удаляю этот атрибут, он работает, но результаты поступают напрямую, а не внутри представления ConfigureMethod.

спасибо.

ответ

8

Есть две вещи, которые я хотел бы отметить,

  1. действия по уходу за детьми предназначены только быть вынесено как PartialView. Таким образом, украшение атрибутом [ChildActionOnly] означает, что это действие должно вернуть PartialViewResult.

  2. Когда мы вызываем ActionLink(), он будет генерировать ссылку на представление без частичного просмотра. Даже если вы не будете украшать [ChildActionOnly], тогда ссылка на частичный вид не имеет смысла.

Итак, сначала решите, хотите ли вы просмотреть или частично просмотреть, а затем спроектировать соответственно.

Смежные вопросы