请问mvc 3 razor(vb.net)需要String.format帮助吗?

时间:2011-11-24 17:09:27

标签: asp.net-mvc vb.net asp.net-mvc-3 razor

我继承了一些代码......我试图将其转换为使用MVC 3,使用Razor,VBHTML如下:

    For Each Message As MessageDetailsModel In Model.Messages
        @<div id='@Message.HeaderId' class='@Message.HeaderCss' onclick=@(String.Format("shMsgTree('{0}','{1}',{2},'{3}');", Message.HeaderCss, Message.HeaderId, Message.MessageId, Message.UserId))>
            ... more stuff...
        </div>
    Next

单步执行代码,String.format解析为:

shMsgTree('sh_msg_GridItem sh_msg_MessageRead ','divHeader0',40,'{85A433F0-4054-42E7-B778-3EF005E411D3}');

这就是我想要的页面,但出于某种原因,它会在页面上输出:

shMsgTree('sh_msg_GridAltItem" sh_msg_MessageRead="

模型上的属性都是字符串。

关于如何渲染它有点不知所措。最初整个onclick javascript正在模型中返回,但这也没有任何好转。

任何建议都会受到欢迎。谢谢!

2 个答案:

答案 0 :(得分:1)

鉴于我们在评论中的谈话以及原始Razor很难阅读的事实,我想我会建议:

如果没有在代码中单步执行它,那么读取当前编写的语法就太难了 - 所以将它分解为一个单独的紧凑,可测试,可读的组件。

希望有所帮助

斯图尔特

答案 1 :(得分:0)

不确定是否会这样做,但您的onClick代码需要在引号之前和之后包装:onClick="@(String.Format(...))"