以下代码适用于aspx视图引擎,我正在尝试将其转换为剃刀,如下所示。问题是第一列没有出现。
我使用action方法将第一列转换为链接。使用剃刀(第一列)根本没有在页面中呈现。其余网格都很好。
可能是什么问题?
@{Html.Grid(Model.Orders).Attributes(style => "width: 100%;").Columns(
column => {
column.For(x => x.OrderNumber).Action(p => {
@:<td>
Html.ActionLink(
p.OrderNumber.ToString(),
"orderdetail",
"OrderUpdate",
new { id = p.OrderNumber, backUrl = Url.Action("OrderHistory", new { controller = "DataController", id = ViewData["id"] }) },
new { });
@:</td>
}).HeaderAttributes(style => "text-align:left");
column.For(x => x.OrderTimeV2).HeaderAttributes(style => "text-align:left");
column.For(x => x.Status).HeaderAttributes(style => "text-align:left");
column.For(x => x.Type).HeaderAttributes(style => "text-align:left");
}).RowStart((p, row) => { }).Render();}
答案 0 :(得分:1)
我已经不再使用mvccontrib网格,因为它在我们的网格中没有多大意义。
无论如何问题是问题中的代码没有返回html,而是将代码直接放入响应流中。使用razor呈现的列的代码,每次调用时都会将代码放入流中。所以它最终会在渲染网格之前将列放入流中。
通过不在网格调用的动作中使用剃刀代码解决了这个问题。
答案 1 :(得分:0)
好的,我通过以下
让它为我工作 @Html.Grid(Model.Result).Columns(column => {
column.For(u => u.Name).Named("Name");
column.For(u => u.Code).Named("Code");
column.For(u => Html.ActionLink("Edit", "Edit", new { id = u.Id })).Named("Edit");
答案 2 :(得分:0)
您可以执行自定义列以获得所需内容:
@Html.Grid(Model).Columns(column => {
column.Custom(
@<div>
<em>Hello there</em>
<strong>@item.Name</strong>
</div>
).Named("Custom Column");
})
来自:MvcContrib Grid Custom Columns (Razor)
我将一些.aspx页面移植到Razor时就这样做了。