【问题标题】:How to write serverside code in csHTML如何在 csHTML 中编写服务器端代码
【发布时间】:2014-08-30 13:15:49
【问题描述】:

我想写一些服务器端代码来显示存储在csHtml页面中页面的View Data中的数据。我做了一些研究,但找不到解决方案。代码输出为

  @(Html.Kendo().TabStrip()
                    .Name("Logins")
                    .SelectedIndex(0)
                    .Animation(animation => animation.Open(open => open.Fade(FadeDirection.In)))
                    .Items(items =>
                    {


                        items.Add().Text("Contact Information").Content(
                            "<div class='employee-details'>" +
                                "<ul>" +
                                "<%>for(int i=0;i<8;i++)"+
                        "{<%>"+
                                    "<li><label>LoginID:</label>"+viewDataServer[i].LoginID.ToString()+"</li>" +
                                    "<li><label>ServerID:</label>" + viewDataServer[i].ServerID.ToString() + "</li>" +
                                    "<li><label>UserID:</label>" + viewDataServer[i].UserID.ToString() + "</li>" +
                                    "<li><label>Password:</label>" + viewDataServer[i].passwd.ToString() + "</li>" +
                                "<%>}<%>"+
                                "</ul>" +
                            "</div>"

                          );      

                    })
                .ToClientTemplate())

【问题讨论】:

  • 为什么要在其中包含循环?你没有在任何地方使用 i?
  • 抱歉我已经更新了。
  • 您使用的是 MVC 2 或更高版本吗?您使用的是哪个视图引擎?您似乎将 Web 表单引擎语法与尖括号和百分号以及 Razor 语法与“at”符号混合在一起。我假设您的 Kendo tabstrip 使用 @ 符号呈现,并且您的页面文件扩展名是 cshtml,您使用的是 ASP.NET MVC 3 或更高版本以及 Razor 视图引擎。据我所知,尖括号和百分号只会在“.aspx”页面中呈现。您可能有过时的教程或使用了错误的 Kendo UI 演示。
  • 其实我不知道该用什么 或 @ 但我已经厌倦了它们并且可以获得所需的结果。它在标签条中

标签: asp.net-mvc razor kendo-ui kendo-asp.net-mvc


【解决方案1】:

我认为您在 Telerik tabstrip demo site 上查看错误的视图引擎页面 - 如果您使用的是 Razor 视图引擎,则需要查看“index.cshtml”而不是“index.aspx”。

我认为在你的情况下正确的语法是-

@(Html.Kendo().TabStrip()
                    .Name("Logins")
                    .SelectedIndex(0)
                    .Animation(animation => animation.Open(open => open.Fade(FadeDirection.In)))
                    .Items(items =>
                    {
                        items.Add().Text("Contact Information").Content(@<div class='employee-details'>
                                <ul>
                                @for(var i=0; i<8; i++)
                                {
                                    <li><label>LoginID:</label>@viewDataServer[i].LoginID.ToString()</li>
                                    <li><label>ServerID:</label>@viewDataServer[i].ServerID.ToString()</li>
                                    <li><label>UserID:</label>@viewDataServer[i].UserID.ToString()</li>
                                    <li><label>Password:</label>@viewDataServer[i].passwd.ToString()</li>
                                }
                                </ul>
                            </div>);
                    })
                .ToClientTemplate())

然而,我强烈建议您不要使用 ViewData 以这种方式将数据从控制器分页到视图。这正是视图模型的目的,它是强类型的。如果由于某种原因使用视图模型不实用,我建议您至少考虑 ViewBag - 这是一种动态类型 - 这意味着您可以传递强类型类的 IEnumerable(或 List),也许是您的 Contact 对象,并且使用类似的东西简单地枚举它们-

@foreach (var contact in ViewBag.Contacts) { ... }

理想的情况绝对是将模型设置为 List 或 IEunerable 之类的-

@model IEnumerable<Contact>

然后在你的视图中枚举如下-

@foreach (var contact in Model) { ... }

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-20
  • 1970-01-01
  • 2016-09-28
  • 2011-03-14
  • 1970-01-01
  • 1970-01-01
  • 2014-03-06
相关资源
最近更新 更多