首页 新闻 会员 周边

(MVC入门小问题)MVC的View层页面数据显示的困惑

0
悬赏园豆:100 [已解决问题] 解决于 2012-03-19 13:29

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%的园豆。

MoonSky的主页 MoonSky | 初学一级 | 园豆:5
提问于:2012-03-17 19:57
< >
分享
最佳答案
0

灵感参考博客: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>),中午睡觉时忽然想起这个最终解决版本,醒来就解决了,总算解决了。谢谢两位回答者。

MoonSky | 初学一级 |园豆:5 | 2012-03-19 13:26
其他回答(2)
-1

把@ 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>)

}

試一下

收获园豆:80
無限遐想 | 园豆:3740 (老鸟四级) | 2012-03-18 09:14

是直接代替吗?直接代替我试了不行,打头好像必须grid.Column,运行也报错。还望指导。

支持(0) 反对(0) MoonSky | 园豆:5 (初学一级) | 2012-03-18 09:24

@MoonSky:

grid.Column(style: "edit", format: (item) =>{

item.IsConnection?

Html.ActionLink("详细", "Detail", new { id = item.InnCode })

:<b >暂无信息</b>})

支持(0) 反对(0) 無限遐想 | 园豆:3740 (老鸟四级) | 2012-03-18 10:00

@無限遐想: 把你里面的汉字字符改成了英文字符还是搞不定.

支持(0) 反对(0) MoonSky | 园豆:5 (初学一级) | 2012-03-18 10:36

@MoonSky: 

grid.Column(style: "edit", format: (item) =>{

@if(item.IsConnection){

Html.ActionLink("详细", "Detail", new { id = item.InnCode })}

else{

<b >暂无信息</b>})}

支持(0) 反对(0) 無限遐想 | 园豆:3740 (老鸟四级) | 2012-03-18 12:59

@無限遐想:报出错误无法从“lambda 表达式”转换为“System.Func<dynamic,object>”,感觉好麻烦。

支持(0) 反对(0) MoonSky | 园豆:5 (初学一级) | 2012-03-18 18:07
-1

建议使用jqgrid,非常棒的一款表格插件,个人观点是后台只做逻辑处理,页面显示逻辑还是由js来处理,这样前后台互不污染

收获园豆:20
az235 | 园豆:8483 (大侠五级) | 2012-03-18 17:46

谢谢提醒,不过我目前不具操作性,因为只是改原有项目的这个小需求,而且之前也没接触过MVC,只这几天用到才接触到的。

支持(0) 反对(0) MoonSky | 园豆:5 (初学一级) | 2012-03-18 18:12
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册