我有一个
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>
类型而不是字符串类型。那么有没有办法将 Dictionary TKey/TValue
转换为字符串类型来满足其要求呢?或者我不想以另一种方式完成同样的任务?
@{
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>
}
}