【问题标题】:Actionlink to child action子操作的操作链接
【发布时间】:2013-08-29 17:41:30
【问题描述】:

我使用Html.Action 方法从另一个视图中调用了一个视图。当用户单击操作链接时,我想在子视图中使用参数调用相同的操作。

当我编写此代码时,我收到以下错误消息:

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

“配置”操作只能由子请求访问。

我该如何处理这个问题?

编辑:我会尝试重新解释这个问题:

我的父视图是 ConfigureMethod.cshtml。我这样称呼子子视图:

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

它转到这个控制器并在 ConfigureMethod 视图中返回 actionresult(不是部分视图):

[ChildActionOnly]
public ActionResult Configure()
{

}

在配置视图中,我创建了一个这样的操作链接:

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

它应该转到这个控制器:

[ChildActionOnly]
public ActionResult Configure(int Id)
{

}

但是,当写入 childonly 属性时,它会出错。当我删除此属性时,它可以工作,但结果直接出现,而不是在 ConfigureMethod 视图中。

谢谢。

【问题讨论】:

    标签: c# asp.net-mvc-3 action actionlink


    【解决方案1】:

    有两点我想指出,

    1. 子操作仅用于呈现为 PartialView。所以用[ChildActionOnly]属性修饰意味着,这是必须返回PartialViewResult的动作。

    2. 当我们调用 ActionLink() 时,它会生成一个指向 View 而不是 Partial View 的链接。即使您不会使用[ChildActionOnly] 进行装饰,那么指向局部视图的链接也是没有意义的。

    所以,首先决定你是想要视图还是局部视图,然后进行相应的设计。

    【讨论】:

    • 我编辑了问题以澄清与您的帖子有关的问题。
    • @mavera,正如你所提到的 Html.ActionLink(....) 将生成一个类似 的链接,点击该链接它将重定向到另一个页面,所以动作不应该有 [ChildAction] 属性。其中 Html.Action(...) 将在父视图的上下文中返回视图/部分视图。 [ChildAction] 表示动作不能直接触发,而是在父上下文中触发。
    猜你喜欢
    • 1970-01-01
    • 2017-05-03
    • 1970-01-01
    • 2015-07-05
    • 2015-10-30
    • 2017-09-26
    • 2015-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多