我继承了一些代码......我试图将其转换为使用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正在模型中返回,但这也没有任何好转。
任何建议都会受到欢迎。谢谢!
答案 0 :(得分:1)
鉴于我们在评论中的谈话以及原始Razor很难阅读的事实,我想我会建议:
如果没有在代码中单步执行它,那么读取当前编写的语法就太难了 - 所以将它分解为一个单独的紧凑,可测试,可读的组件。
希望有所帮助
斯图尔特
答案 1 :(得分:0)
不确定是否会这样做,但您的onClick
代码需要在引号之前和之后包装:onClick="@(String.Format(...))"