如何在asp.net中使用多个控制器?

时间:2016-07-19 08:46:53

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

我有两个控制器:HomeControllerDocGenControllerHomeController是我项目中的默认控制器。我想打开按钮,点击我DocGenController中的一个功能。例如:我在我的页面上创建了一个顶部导航。我使用此代码打开DocGen.cshtml - 页面(通过控制器HomeController):@Html.ActionLink("Generator", "DocGen", "Home")

好的,现在我尝试了这个:@Html.ActionLink("Add Value", "AddValue", "DocGen", new { @class = "btn btn-primary" })但我每次都会收到此错误:The resource (/Home/AddValue) can be not found (Error: 404)

为什么他试图打开/ Home / AddValue?!

如何使用DocGenController?

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

如果您还想要,也可以使用HTML <a> - 标记,并在href中添加:href='@Url.Action("AddValue", "DocGen")'

所以完整的<a>将是:

<a href='@Url.Action("AddValue", "DocGen")' class="btn btn-primary">Add Value</a>

答案 1 :(得分:1)

您正在使用Action Link方法的错误重载,如下所示: https://msdn.microsoft.com/en-us/library/system.web.mvc.html.linkextensions.actionlink(v=vs.118).aspx

包括控制器名称在内的最简单方法的签名是:

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

这意味着您需要为您的通话提供一个或多个对象,并使用:

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

例如:@Html.ActionLink("Add Value", "AddValue", "DocGen")应该完成工作或:

@Html.ActionLink("Add Value", "AddValue", "DocGen", new{}, new { @class = "btn btn-primary" })
在params对象中你可能想传递一些id或确认:)

相关问题