在我家控制器返回的Home / index页面上,我添加了一个HTML Action Link:
@Html.ActionLink("Create Ticket", "Create", "CustomerTicketInfo", new { @class = "btn btn-default" })
点击后,我会转到创建页面。我的CustomerTicketInfo控制器返回此创建页面,该控制器允许用户创建票证,然后提交票证。
但是当我点击操作链接时,我发现服务器错误/资源未找到。它试图转到:http://localhost:61517/Home/Create?Length=18
,其中不存在Create方法。它存在于CustomerTicketInfo控制器中。
我不确定为什么会失败。我正在陈述行动:创建。和控制器: CustomerTicketInfo 在Action链接参数中。但它仍然想要去家庭控制器? 我做错了什么?
我可以给你一个标签,但是,我想以MVC的方式做到这一点。
答案 0 :(得分:3)
您正在使用导致不良结果的重载:
public static MvcHtmlString ActionLink
(this HtmlHelper htmlHelper,
string linkText,
string actionName,
object routeValues,
object htmlAttributes)
相反,你可能想要这个:
@Html.ActionLink( "Create Ticket", "Create", "CustomerTicketInfo", null, new { @class = "btn btn-default" } )
请注意额外参数,这会导致使用正确的重载。
答案 1 :(得分:1)
是的,蒂姆的解决方案可以解决您的问题。由于有时很难记住正确的重载,我更喜欢在下面构建@Html.ActionLink
,所以我知道我为哪个参数赋值。
@Html.ActionLink( linkText: "Create Ticket",
actionName: "Create",
controllerName: "CustomerTicketInfo",
routeValues: null,
htmlAttributes: new
{
@class = "btn btn-default"
})
通过这种方式,它具有什么样的可读性。如果我们需要为routeValues
传递多个值,那么可以像
routeValues: new
{
type = 'whatever type',
id = 'id value'
},