Asp.net mvc 3 如何在mvc3中自定义webgrid模板或类似函数!

Asp.net mvc 3 如何在mvc3中自定义webgrid模板或类似函数!,asp.net-mvc-3,webgrid,Asp.net Mvc 3,Webgrid,webgrid很容易使用,在mvc3中,但是参数太多了,每个页面需要设置的参数太糟糕了, 有没有办法修复模板中的一些参数,例如修复: tableStyle: "webgrid-table" , headerStyle: "webgrid-header" , alternatingRowStyle: "alt" , selectedRowStyle: ""

webgrid很容易使用,在mvc3中,但是参数太多了,每个页面需要设置的参数太糟糕了, 有没有办法修复模板中的一些参数,例如修复:

                  tableStyle: "webgrid-table"
                 , headerStyle: "webgrid-header"
                 , alternatingRowStyle: "alt"
                 , selectedRowStyle: ""
                 , displayHeader: true
                 , numericLinksCount: 10
                 , footerStyle: "paging-number"
                 , rowStyle: "webgrid-row"
和常用列删除、添加、编辑

grid.Column(格式:(item)=>Html.ActionLink(“”) ,“添加” 无效的 ,新的{@class=“webgrid add”,title=“add row”,onclick=“return gridop(this);”})) ,grid.Column(格式:(项)=>Html.ActionLink(“”) ,“编辑” 无效的 ,新{id=item[0]} ,新的{@class=“webgrid edit”,title=“edit row”,onclick=“return gridop(this);”})) ,grid.Column(格式:(项)=>Html.ActionLink(“”) “德尔” 无效的 ,新{id=item[0]} ,新的{@class=“webgrid del”,title=“delete row”,onclick=“return gridop(this);”}))

如果在代码之前完成,当我们准备显示webgrid时,只需在页面中编码“showgrid(Model);”


gridmodel.cshtml

@模型IEnumerable @{ var grid=新的WebGrid(模型,行页面:10)

if(ViewData.TemplateInfo.TemplateDepth>1)
{
@ViewData.ModelMetadata.SimpleDisplayText;
}
其他的
{
列表列=新列表();
columns.Add(grid.Column(格式:(item)=>Html.ActionLink(“)
,“添加”
无效的
,新的{@class=“webgrid add”,标题=“添加新记录!", onclick=“return gridop(this);”}));
columns.Add(grid.Column(格式:(item)=>Html.ActionLink(“)
,“编辑”
无效的
,新的{@class=“webgrid编辑”,标题=“编辑本行记录信息!,onclick=“return gridop(this);”}));
columns.Add(grid.Column(格式:(item)=>Html.ActionLink(“)
“德尔”
无效的
,新{id=item[1]}
,新的{@class=“webgrid del”,标题=“删除本行记录信息!,onclick=“return gridop(this);”}));
如果(ViewData.TemplateInfo.TemplateDepth>1)
{
@ViewData.ModelMetadata.SimpleDisplayText;
}
其他的
{
foreach(ViewData.ModelMetadata.Properties.Where(pm=>pm.ShowForEdit)中的var项&&
!ViewData.TemplateInfo.Visited(pm)))
{
如果(!item.hidesuroundingTML)
{
添加(新WebGridColumn{ColumnName=item.PropertyName,Header=item.DisplayName});
}
}
}
var a=grid.GetHtml(表样式:“webgrid表”
,标题样式:“webgrid标题”
,交替行样式:“alt”
,selectedRowStyle:“
,displayHeader:true
,标题:“aaaaaaaaaaaaaa”
,编号:10
,页脚样式:“页码”
,行样式:“webgrid行”
,columns:grid.columns(columns.ToArray()
)
);
@Html.Raw(a.ToString());
}
}
over是我的代码,但ViewData.ModelMetadata.Properties为null,无法检索item.PropertyName, item.DisplayName。我不知道为什么 请帮助我!

请尝试使用。我的意思是,在控件中定义相同的默认值。此控件应该是HtmlHelper类的扩展方法。因此,您可以从视图中:

@MyGrid(模型)

我通常会为此创建一个/Helpers文件夹

希望这有帮助

if (ViewData.TemplateInfo.TemplateDepth > 1)
{
@ViewData.ModelMetadata.SimpleDisplayText;
}
else
{

    List<WebGridColumn> columns = new List<WebGridColumn>();
    columns.Add(grid.Column(format: (item) => Html.ActionLink(" "
                   , "add"
                    , null
                    , new { @class = "webgrid-add", title = " 添加新记录!", onclick = "return gridop(this);" })));

    columns.Add(grid.Column(format: (item) => Html.ActionLink(" "
                          , "edit"
                          , null
                         , new { @class = "webgrid-edit", title = " 编辑本行记录信息!", onclick = "return gridop(this);" })));
    columns.Add(grid.Column(format: (item) => Html.ActionLink(" "
                           , "del"
                            , null
                             , new {id = item[1] }
                               , new { @class = "webgrid-del", title = " 删除本行记录信息!", onclick = "return gridop(this);" })));                                                                    



                   if (ViewData.TemplateInfo.TemplateDepth > 1)
{
@ViewData.ModelMetadata.SimpleDisplayText;
}
                   else
                   {

                       foreach (var item in ViewData.ModelMetadata.Properties.Where(pm => pm.ShowForEdit &&
                                                                                                      !ViewData.TemplateInfo.Visited(pm)))
                       {

                           if (!item.HideSurroundingHtml)
                           {
                               columns.add(new WebGridColumn { ColumnName = item.PropertyName, Header = item.DisplayName });
                           }

                       }
                   }

    var a = grid.GetHtml(tableStyle: "webgrid-table"
                 , headerStyle: "webgrid-header"
                 , alternatingRowStyle: "alt"
                 , selectedRowStyle: ""
                 , displayHeader: true
                 , caption: "aaaaaaaaaaaaaaaa"
                 , numericLinksCount: 10
                 , footerStyle: "paging-number"
                 , rowStyle: "webgrid-row"
                 , columns: grid.Columns(columns.ToArray()


               )
               );

  @Html.Raw(a.ToString());
           }

}