我目前正在使用Razor视图引擎为我们公司的C#MVC4构建一个新网站的部分工作。我们使用Twitter Bootstrap 3提供基本主题,并使用TwitterBootstrapMVC中的Html帮助程序生成Html标记。
我目前正在处理的任务是创建一个Razor帮助程序(位于App_Code /中),它将自动生成并填充项目列表中的表。
首先,我试图构建标题行,但是,每当我尝试引入一个循环来生成标题的单元格(正文和页脚都这样做)时,我收到以下错误:
System.Web.Compilation.CompilationException
CS1502: The best overloaded method match for `System.Web.WebPages.HelperPage.WriteTo(System.IO.TextWriter, object)' has some invalid arguments
我试图使用的代码如下:
@helper NewGridView(object data, string[] headers) {
// data is to be a list/array of items
var Html = ((System.Web.Mvc.WebViewPage) WebPageContext.Current.Page).Html;
using (var table = Html.Bootstrap().Begin(new Table())) {
using (var head = table.BeginHeader ()) {
using (var row = head.BeginHeaderRow ()) {
//for (int i = 0; i < headers.Length; i++)
foreach (string header in headers) {
@row.Cell ("cell"); // had a static string here to test that the issue wasn't with the value from the array
}
}
}
}
}
如果我删除foreach循环(for循环也不起作用),并保留@row.Cell(...)
调用,它可以正常工作,但是当for或foreach循环就位时,它刷新时会产生上述错误网站。
是否有关于Razor视图和循环的遗漏,或者我试图做的事情是不可能的?
答案 0 :(得分:0)
由于headers
是字符串数组,因此您只需使用它来获取行值。
@header
代替@row.Cell ("cell");
foreach (string header in headers)
{
@header
}
答案 1 :(得分:0)
迟到的答案,几天后就解决了这个问题,但是在项目的其他方面陷入了困境,结果忘了发布答案。迟到总比没有好。
事实证明编译器在某些情况下对空间的使用非常挑剔。以下内容生成原始帖子中描述的错误。
foreach (string header in headers) {
@row.Cell ("cell");
}
但以下工作正常。
foreach (string header in headers) {
@row.Cell("cell");
}
似乎编译器由于某种原因放在foreach循环中时,不喜欢函数名和括号之间的空格。