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

本文关键字:控制器 asp net | 更新日期: 2023-09-27 17:57:32

我有以下两个控制器: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?

感谢您的帮助

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

如果您愿意,也可以使用HTML <a>-标记,在href中只需放入:href='@Url.Action("AddValue", "DocGen")'

因此,完整的<a>将是:

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

您使用了错误的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或confirmation:)