我有一个
Dictionary<string, string>
,其中包含用于 HTML.ActionLink
链接的键值。大多数情况下都会使用 TKeys
,但如果有一个 TValue
不为空,我想用它来代替。原因是,由于 UI 原因,某些单词比控制器操作名称效果更好,例如 GetUserProfile 更好地显示为 User Profile。
Html.ActionLink
抛出此错误:
CS1928:“System.Web.Mvc.HtmlHelper”不包含“ActionLink”的定义和最佳扩展方法重载 'System.Web.Mvc.Html.LinkExtensions.ActionLink(System.Web.Mvc.HtmlHelper, string, string, string, object, object)' 有一些无效参数
我很确定这是因为它看到的是
Dictionary<string, string>
类型而不是 string
类型。那么有没有办法将 Dictionary TKey/TValue
转换为 string
类型来满足它的要求呢?或者我不想用另一种方式来完成同样的任务?
@{
Dictionary<string, string> nav = new Dictionary<string, string>() {{ "Email", "" }, { "Username", "" }, { "EditProfile", "Edit Profile" }};
}
@foreach (var navItem in nav)
{
if (navItem.Value.IsEmpty())
{
<li>
@Html.ActionLink(navItem.Key, navItem, "ControllerName")
</li>
}
else
{
<li>
@Html.ActionLink(navItem.Value, navItem, "ControllerName")
</li>
}
}
ActionLink(HtmlHelper, String, String, String)
与第二个参数(在 HtmlHelper
之后计数,因为它是扩展方法)一起使用,需要 string
值。
当您向第二个参数提供
KeyValuePair<string, string>
的值时。我相信您想要的是将 navItem.Key
提供为 actionName
。
@foreach (var navItem in nav)
{
if (navItem.Value.IsEmpty())
{
<li>
@Html.ActionLink(navItem.Key, navItem.Key, "ControllerName")
</li>
}
else
{
<li>
@Html.ActionLink(navItem.Value, navItem.Key, "ControllerName")
</li>
}
}