如何在asp.net中使用多个控制器
本文关键字:控制器 asp net | 更新日期: 2023-09-27 17:57:32
我有以下两个控制器:HomeController
和DocGenController
。HomeController
是我项目中的默认控制器。我想用一个按钮打开我的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?
感谢您的帮助
如果您愿意,也可以使用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:)