C# 将模型属性传递给Html.ActionLink
编辑:我找到了答案,但这意味着放弃使用HtmlActionlink而支持这样做(我原来帖子中的“废话”参数现在被转为我实际需要的参数): 结果:值不能为null或空。 参数名称:linkText 试着这样做:C# 将模型属性传递给Html.ActionLink,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,编辑:我找到了答案,但这意味着放弃使用HtmlActionlink而支持这样做(我原来帖子中的“废话”参数现在被转为我实际需要的参数): 结果:值不能为null或空。 参数名称:linkText 试着这样做: @Html.ActionLink(Model.LastName ..... @Html.ActionLink(item.LastName, "blah", "blah") @Html.ActionLink(@Html.DisplayFor(modelItem => item.L
@Html.ActionLink(Model.LastName .....
@Html.ActionLink(item.LastName, "blah", "blah")
@Html.ActionLink(@Html.DisplayFor(modelItem => item.LastName), "blah", "blah")
@Html.DisplayFor(Model.LastName, "actionMethod","controllerName",new{Model.LastName});
@Html.ActionLink(Model.LastName, "ActionName","ControllerName")
@model MyCompany.LGCustData
结果:
System.Collections.Generic.IEnumerable'不包含'LastName'的定义,并且找不到接受'System.Collections.Generic.IEnumerable'类型的第一个参数的扩展方法'LastName'(是否缺少using指令或程序集引用?)
等等。不管怎样,这些错误总是其中之一
是的,我尝试了这里建议的每一件事,也尝试了其他地方发现的同样数量的其他事情(这就是我找到我使用的答案的方式,它是由另一个有同样问题的人发布的)
尽管进行了大量的搜索,但我似乎不知道如何做似乎应该是基本的事情 这很好:
@Html.DisplayFor(modelItem => item.LastName)
但我想在Html.ActionLink中将LastName字段显示为链接文本,如下所示:
@Html.ActionLink(Model.LastName .....
@Html.ActionLink(item.LastName, "blah", "blah")
@Html.ActionLink(@Html.DisplayFor(modelItem => item.LastName), "blah", "blah")
@Html.DisplayFor(Model.LastName, "actionMethod","controllerName",new{Model.LastName});
@Html.ActionLink(Model.LastName, "ActionName","ControllerName")
@model MyCompany.LGCustData
但什么都不管用。按上述方式操作会导致编译错误:
方法的类型参数
'System.Web.Mvc.Html.DisplayExtensions.DisplayFor(System.Web.Mvc.HtmlHelper,
System.Linq.Expressions.Expression>)'
无法从用法推断。尝试指定类型参数
明确地
我试过这样做:
@Html.ActionLink(Model.LastName .....
@Html.ActionLink(item.LastName, "blah", "blah")
@Html.ActionLink(@Html.DisplayFor(modelItem => item.LastName), "blah", "blah")
@Html.DisplayFor(Model.LastName, "actionMethod","controllerName",new{Model.LastName});
@Html.ActionLink(Model.LastName, "ActionName","ControllerName")
@model MyCompany.LGCustData
以及其嵌套的其他变体。这也不起作用(不会编译),错误为“actionlink没有重载方法…”
我觉得这应该很简单。是的,我对C#和MVC非常陌生。这是一个关于如何使用actionlink的简短描述
Html.ActionLink("link title",
"ActionMethod",
"ControllerName",
null, // <-- Route arguments.
null // <-- htmlArguments
)
*如果在这种情况下,您希望按照标准约定向管线添加一些参数:
/controller/action/parameter
否则
@Html.DisplayFor(Model.LastName, "actionMethod","controllerName");
这是关于如何使用actionlink的简短描述
Html.ActionLink("link title",
"ActionMethod",
"ControllerName",
null, // <-- Route arguments.
null // <-- htmlArguments
)
*如果在这种情况下,您希望按照标准约定向管线添加一些参数:
/controller/action/parameter
否则
@Html.DisplayFor(Model.LastName, "actionMethod","controllerName");
您需要使用超负荷的
Html.ActionLink
:
@Html.ActionLink(string LinkText,string ActionName,string ControllerName)
这样做:
@Html.ActionLink(Model.LastName .....
@Html.ActionLink(item.LastName, "blah", "blah")
@Html.ActionLink(@Html.DisplayFor(modelItem => item.LastName), "blah", "blah")
@Html.DisplayFor(Model.LastName, "actionMethod","controllerName",new{Model.LastName});
@Html.ActionLink(Model.LastName, "ActionName","ControllerName")
@model MyCompany.LGCustData
更新:
然后这样做,因为您的模型是IEnumerable:
@foreach(var item in Model)
{
@Html.ActionLink(item.LastName, "ActionName","ControllerName")
}
如果模型是这样的单个:
@Html.ActionLink(Model.LastName .....
@Html.ActionLink(item.LastName, "blah", "blah")
@Html.ActionLink(@Html.DisplayFor(modelItem => item.LastName), "blah", "blah")
@Html.DisplayFor(Model.LastName, "actionMethod","controllerName",new{Model.LastName});
@Html.ActionLink(Model.LastName, "ActionName","ControllerName")
@model MyCompany.LGCustData
那么应该是这样的:
@Html.ActionLink(Model.LastName, "ActionName","ControllerName")
您需要使用超负荷的
Html.ActionLink
:
@Html.ActionLink(string LinkText,string ActionName,string ControllerName)
这样做:
@Html.ActionLink(Model.LastName .....
@Html.ActionLink(item.LastName, "blah", "blah")
@Html.ActionLink(@Html.DisplayFor(modelItem => item.LastName), "blah", "blah")
@Html.DisplayFor(Model.LastName, "actionMethod","controllerName",new{Model.LastName});
@Html.ActionLink(Model.LastName, "ActionName","ControllerName")
@model MyCompany.LGCustData
更新:
然后这样做,因为您的模型是IEnumerable:
@foreach(var item in Model)
{
@Html.ActionLink(item.LastName, "ActionName","ControllerName")
}
如果模型是这样的单个:
@Html.ActionLink(Model.LastName .....
@Html.ActionLink(item.LastName, "blah", "blah")
@Html.ActionLink(@Html.DisplayFor(modelItem => item.LastName), "blah", "blah")
@Html.DisplayFor(Model.LastName, "actionMethod","controllerName",new{Model.LastName});
@Html.ActionLink(Model.LastName, "ActionName","ControllerName")
@model MyCompany.LGCustData
那么应该是这样的:
@Html.ActionLink(Model.LastName, "ActionName","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>
@foreach(ViewBag.users中的var用户)
{
string complete_name=string.Format(“{0}{1}”,user.Firstname,user.Lastname);
- @ActionLink(完整的名称,“详细信息”,新的{Id=user.Id})
}
在我的计算机上,它工作得非常好。对于我来说,我只需使用
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>
@foreach(ViewBag.users中的var用户)
{
string complete_name=string.Format(“{0}{1}”,user.Firstname,user.Lastname);
- @ActionLink(完整的名称,“详细信息”,新的{Id=user.Id})
}
在我的电脑上,它工作得很好。只要用它就行了
@Html.ActionLink(Html.DisplayNameFor(model => model.LastName).ToHtmlString(), "blah", "blah")
只用
@Html.ActionLink(Html.DisplayNameFor(model => model.LastName).ToHtmlString(), "blah", "blah")
@Html.ActionLink(@Model.acounnumber…)
可以防止有人像我一样来到这里 @Html.ActionLink(@Model.acounnumber…)
可以防止有人像我一样来到这里 很抱歉,执行此操作时出现错误:@Html.ActionLink(item.LastName,“blah”,“blah”)实际上是值,不能为null或空。参数名称:linkText在尝试其他操作时,我遇到了另一个关于指定类型参数的错误。我忘了我在尝试什么。为什么要使用modelItem=>item.LastName
而不是item=>item.LastName
?您当前正在完全忽略lambda表达式参数…item=>item.Lastname在任何容量下都不起作用。即使在htmldisplayfor中,它也会抛出一个错误“名为'item'的局部变量不能在此范围内声明,因为它将赋予'item'不同的含义,而'item'已在'parent or current'范围内用于表示其他内容”,然后更改参数名称!使用modelItem=>modelItem.LastName
。我的观点仍然站得住脚……对不起,我在执行此操作时遇到的错误:@Html.ActionLink(item.LastName,“blah”,“blah”)实际上是值,不能为null或空。参数名称:linkText在尝试其他操作时,我遇到了另一个关于指定类型参数的错误。我忘了我在尝试什么。为什么要使用modelItem=>item.LastName
而不是item=>item.LastName
?您当前正在完全忽略lambda表达式参数…item=>item.Lastname在任何容量下都不起作用。即使在htmldisplayfor中,它也会抛出一个错误“名为'item'的局部变量不能在此范围内声明,因为它将赋予'item'不同的含义,而'item'已在'parent or current'范围内用于表示其他内容”,然后更改参数名称!使用modelItem=>modelItem.LastName
。我的观点仍然站得住脚……对不起,这些东西都不管用。所有人都会给我一个或另一个错误。这个:@Html.DisplayFor(Model.LastName,“actionMethod”,“controllerName”);给我错误“…不包含'LastName'的定义…”“@Html.ActionLink(item=>item.LastName,“blah”,“blah”)这也不起作用。“无法将lamda表达式转换为字符串类型”为什么将动态属性转换为链接文本如此困难?也许我会忘记它,在它旁边贴一个链接,上面写着“细节”,就像你让VS自动创建索引、创建、编辑、细节视图时得到的一样。也许VS知道一些我不知道的事情