编辑:我找到了答案,但这意味着放弃使用HtmlActionlink而支持这样做(我原来的帖子中的“blah”参数现在正在为我实际需要的内容提供支持):
<a href="@Url.Action("LinkedDetails",
new
{
controller = "LGDetails",
findByString = item.AccounNumber
})">@item.LastName</a>
这正是我想要的。尝试使用HtmlActionLink完成相同的操作会导致一个错误或另一个错误,无论我尝试了什么:
@Html.ActionLink(item.LastName,
"../LGDetails/LinkedDetails",
new
{
controller = "LinkedDetails",
findByString = item.AccounNumber
})
结果:值不能为null或为空。参数名称:linkText
试试这样:
@Html.ActionLink(Model.LastName .....
System.Collections.Generic.IEnumerable'不包含'LastName'的定义,也没有扩展方法'LastName'接受类型为'System.Collections.Generic.IEnumerable'的第一个参数'(你是否缺少using指令或装配参考?)
等等总是其中一个错误。
是的,我尝试了这里建议的每一件事,并在其他地方找到了相同数量的其他东西(这就是我找到了我使用的答案,它是由另一个有同样问题的人发布的)。
尽管进行了大量的搜索,我似乎无法弄清楚如何做似乎应该是基本的事情。
这很好用:
@Html.DisplayFor(modelItem => item.LastName)
但我想将LastName字段显示为Html.ActionLink中的链接文本,如下所示:
@Html.ActionLink(item.LastName, "blah", "blah")
但没有任何作用。像上面这样做会给我一个编译错误:
无法从用法中推断出方法'System.Web.Mvc.Html.DisplayExtensions.DisplayFor(System.Web.Mvc.HtmlHelper,System.Linq.Expressions.Expression>)'的类型参数。尝试显式指定类型参数
我试过这样的:
@Html.ActionLink(@Html.DisplayFor(modelItem => item.LastName), "blah", "blah")
以及嵌套的其他变体。这也不起作用(不会编译)错误“没有动作链接的重载方法..”
我觉得这应该很简单。是的,我是C#和MVC的新手。
你需要使用Html.ActionLink
的这个重载:
@Html.ActionLink(string LinkText,string ActionName,string ControllerName)
这样做:
@Html.ActionLink(Model.LastName, "ActionName","ControllerName")
更新:
然后这样做,因为你的模型是IEnumerable:
@foreach(var item in Model)
{
@Html.ActionLink(item.LastName, "ActionName","ControllerName")
}
如果Model是Single,就像这样:
@model MyCompany.LGCustData
那应该是这样的:
@Html.ActionLink(Model.LastName, "ActionName","ControllerName")
@Html.ActionLink(@Model.AccounNumber....)
工作,以防有人像我一样在这里结束。
这是关于如何使用actionlink的breaf描述
Html.ActionLink("link title",
"ActionMethod",
"ControllerName",
null, // <-- Route arguments.
null // <-- htmlArguments
)
尝试这样的事情:
@Html.DisplayFor(Model.LastName, "actionMethod","controllerName",new{Model.LastName});
*如果您希望在路线中添加一些参数,请遵循标准惯例:
/controller/action/parameter
除此以外
@Html.DisplayFor(Model.LastName, "actionMethod","controllerName");
对我来说,我只是简单地使用像这样的String.Format()
函数将字符串转换为“动态文本”
<ul>
@foreach (var user in ViewBag.users )
{
string complete_name = String.Format("{0} {1}", user.Firstname, user.Lastname);
<li>@Html.ActionLink(complete_name, "Details", new { Id = user.Id })</li>
}
</ul>
在我的电脑上它工作得很好。
只是用
@Html.ActionLink(Html.DisplayNameFor(model => model.LastName).ToHtmlString(), "blah", "blah")