@ Html.Action没有调用控制器内的动作

时间:2014-02-05 15:21:59

标签: c# asp.net-mvc asp.net-mvc-4 razor

我是MVC的新手。

在Razor中,我需要在控制器内部调用一个方法,但它对我不起作用。

我的剃刀代码如下:

@helper SubmitCommnet()
{
    @Html.Action("Post2", "PostShow", new { id = 1111 });

}

我的控制器如下:

public class PostShowController : SurfaceController
{      
    public ActionResult Index()
    {
        return null;
    }

    public ActionResult Post2(int id)
    {
        return null;
    }
}

为什么不调用Post2方法?

2 个答案:

答案 0 :(得分:2)

使用Razor,您必须使用Html.ActionLink执行此操作,从html生成超链接标记,或直接使用超链接标记,以获取示例:

@Html.ActionLink("Post", // <-- Text for UI 
                "Post2",   // <-- ActionMethod
                "PostShow",  // <-- Controller Name.
                new { id = 1111 }, // <-- Route arguments.
                null  // <-- htmlArguments .. which are none. You need this value
                      //     otherwise you call the WRONG method ...
                      //     (refer to comments, below).
                )

答案 1 :(得分:2)

您使用Html.ActionLink就像Url.Action一样。请记住,您还需要指定链接文本。有些东西告诉我你需要以下方法:

public static MvcHtmlString ActionLink(
    this HtmlHelper htmlHelper,
    string linkText,
    string actionName,
    string controllerName,
    Object routeValues,
    Object htmlAttributes
)

msdn link

然后你可以使用:

来调用它
@Html.ActionLink("Click Me", "Post2", "PostShow", new { id = 1111 }, null)

不幸的是,如果你需要提供动作,控制器&amp;路由参数,您需要使用htmlAttributes原型(但是,您只需传递null)。