我是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方法?
答案 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
)
然后你可以使用:
来调用它@Html.ActionLink("Click Me", "Post2", "PostShow", new { id = 1111 }, null)
不幸的是,如果你需要提供动作,控制器&amp;路由参数,您需要使用htmlAttributes
原型(但是,您只需传递null
)。