2
我使用剃须刀内联模板来定义网格列格式。ASP.net MVC:如何在代码中定义剃须刀内联模板?
这项工作巨大的,如果你要定义一个Razor视图内联模板。
如何在控制器的代码中执行相同的操作(用列表模板定义列列表)?
我使用剃须刀内联模板来定义网格列格式。ASP.net MVC:如何在代码中定义剃须刀内联模板?
这项工作巨大的,如果你要定义一个Razor视图内联模板。
如何在控制器的代码中执行相同的操作(用列表模板定义列列表)?
以下是示例代码。您还可以使用this获取查看代码。另请参阅this用于扩展网格,
public class HomeController : Controller
{
public class Employee
{
public string Name { get; set; }
public string Description { get; set; }
public int Price { get; set; }
}
public ActionResult Index()
{
var myClasses = new List<Employee>{
new Employee { Name="A" , Price=1, Description="A A"},
new Employee { Name="B" , Price=2, Description="B B"},
new Employee { Name="C" , Price=3, Description="C C"}};
var grid = new WebGrid(source: myClasses);
var html = grid.GetHtml(
columns: grid.Columns(
grid.Column("Name", "Product", style: "product"),
grid.Column("Description", format: item => new System.Web.WebPages.HelperResult(writer =>
{
WriteLiteralTo(writer, "<i>");
WriteTo(writer, item.Description);
WriteLiteralTo(writer, "</i>");
})),
grid.Column("Price", format: item => new System.Web.WebPages.HelperResult(wrtier =>
{
WriteLiteralTo(wrtier, "$");
WriteTo(wrtier, item.Price);
}))
)
);
return View();
}
private void WriteLiteralTo(TextWriter writer, object content)
{
writer.Write(HttpUtility.HtmlEncode(content));
}
public static void WriteTo(TextWriter writer, object content)
{
writer.Write(HttpUtility.HtmlEncode(content));
}
}
为什么在控制器中?我仍将ColumnModels定义保留在ViewModel中,然后发出网格。当然,ViewModel由控制器设置。编辑:操作,误解了这个问题,对不起。今天咖啡因仍然很低( – BigMike
Eduardo,MVC模式的设计和实现,使得只有视图知道用户界面的细节,控制器不应该知道你正在使用网格,网格列,按钮或任何... –
Davide:我很感谢你的关注,我在说控制器,并以网格作为简化问题的示例,我正在制作的解决方案比这更复杂顺便说一句,你知道答案吗? –