MVC的View层页面中一个grid的最后一列原来是:
grid.Column(style: "edit", format: (item) => Html.ActionLink("详细", "Detail", new { id = item.InnCode })),表示一个超链接“详细”,点击转到另一个页面。item是绑定的数据,有一个bool类型的IsConnection属性。原来是正常运行的,现在需求有变,我现在想根据这个IsConnection的值来确定是否显示超链接,如果值为真,则显示超链接,如果值为假则显示文本信息(没有超链接的)。
找了好久,找到微软的一篇文章(网址后来也没找到)上的一个例子:grid.Column("Name", format: @<text>@Html.ActionLink((string)item.Name, "Details", "Product", new {id=item.ProductId}, null)</text>),
参考着写了 grid.Column(style: "edit", format: @<text>@if(item.IsConnection)
{
Html.ActionLink("详细", "Detail", new { id = item.InnCode });
}
else{
<b style="color: red">暂无信息</b>
}</text>)
然后发现,IsConnection为假的正常显示“暂无信息”而为真的什么也不显示。然后在Html.ActionLink("详细", "Detail", new { id = item.InnCode })这一行的前面加了一行 <b style="color: green">详细</b>,测试发现IsConnection属性为真的只显示绿色的汉字“详细”,并没有超链接。本人对MVC还不太了解,弄了几个小时还是没解决,所谓会者不难,难者不会,思想很简单,还望会的朋友帮忙解决。豆不多,50%的园豆。
灵感参考博客:http://blog.sina.com.cn/s/blog_48df7443010109gt.html,解决方案:grid.Column(style:"edit",format:@<text>@if(item.IsConnection){@Html.ActionLink("详细", "Detail", new { id = item.InnCode })}else{<b>暂无信息</b>}</text> ),第一个曲线解决版本,先将IsConnection为否的转到一个空页面上, grid.Column(style:"edit",format:@<text>@if(item.IsConnection){@Html.ActionLink("详细", "Detail", new { id = item.InnCode })}else{@Html.ActionLink("暂无信息", "", new { id = item.InnCode })}</text>),中午睡觉时忽然想起这个最终解决版本,醒来就解决了,总算解决了。谢谢两位回答者。
把@ if(item.IsConnection) {
grid.Column(style: "edit", format: (item) => Html.ActionLink("详细", "Detail", new { id = item.InnCode }))
}
else
{
grid.Column(style: "edit", format:@<text><b >暂无信息</b></text>)
}
試一下
是直接代替吗?直接代替我试了不行,打头好像必须grid.Column,运行也报错。还望指导。
@MoonSky:
grid.Column(style: "edit", format: (item) =>{
item.IsConnection?
Html.ActionLink("详细", "Detail", new { id = item.InnCode })
:<b >暂无信息</b>})
@無限遐想: 把你里面的汉字字符改成了英文字符还是搞不定.
@MoonSky:
grid.Column(style: "edit", format: (item) =>{
@if(item.IsConnection){
Html.ActionLink("详细", "Detail", new { id = item.InnCode })}
else{
<b >暂无信息</b>})}
@無限遐想:报出错误无法从“lambda 表达式”转换为“System.Func<dynamic,object>”,感觉好麻烦。
建议使用jqgrid,非常棒的一款表格插件,个人观点是后台只做逻辑处理,页面显示逻辑还是由js来处理,这样前后台互不污染
谢谢提醒,不过我目前不具操作性,因为只是改原有项目的这个小需求,而且之前也没接触过MVC,只这几天用到才接触到的。