我有以下扩展方法:
public static MvcHtmlString GenerateBodyCellContentFor(
this HtmlHelper helper,
Goal goal,
GoalProperty property)
{
if (property == GoalProperty.Name)
{
return LinkExtensions.ActionLink(
helper,
goal.Name,
"Show",
new
{
goalId = goal.GoalId
});
}
// rest of the code irrelevant
}
这可以按预期工作并生成以下链接:
http://localhost:54913/Goal/Show?goalId=19013
由于某些情况,我现在需要明确指定控制器名称。所以我将方法改为:
public static MvcHtmlString GenerateBodyCellContentFor(
this HtmlHelper helper,
Goal goal,
GoalProperty property)
{
if (property == GoalProperty.Name)
{
return LinkExtensions.ActionLink(
helper,
goal.Name,
"Show",
"Goal", // the only change in code
new
{
goalId = goal.GoalId
});
}
// rest of the code irrelevant
}
结果令我惊讶的是:
http://localhost:54913/Goal/Show?Length=4
我尝试删除并添加控制器参数三次,因为我无法相信这实际发生了。这是唯一的变化,它会导致此行为。
length参数等于控制器名称的长度(只是用不同的字符串检查)。
你知道可能会发生什么吗?
答案 0 :(得分:0)
正如this question的答案所解释的那样,问题是由于没有任何重载符合我需要它的方式。解决这个问题最简单的方法是:
return LinkExtensions.ActionLink(
helper,
goal.Name,
"Show",
"Goal",
new
{
goalId = goal.GoalId
},
null);