我有一个MVCContrib网格,显示来自Account对象的选定属性。我希望用户选择一行并转到另一个页面以查看他们单击的行所代表的对象的完整属性。如何将.Selected操作添加到网格的行?
答案 0 :(得分:3)
我今天刚遇到类似的问题。
你可以像这样使用.RowAttributes:
Html.Grid(Model).Columns(column =>
{
column.For(e => e.Id);
column.For(e => e.Message);
})
.RowAttributes(x => new Dictionary<string, object>
{{"onClick", "window.location.href = 'google.com'"}})
.Render();
结果,当你点击它时会触发javascript“onclick”并打开谷歌。您可以使用Lamda中的“x”更改要传递ID的网址。
答案 1 :(得分:3)
如果你在MVC3上下文中使用Grid,你也可以通过服务器端的扩展类来实现这一点:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using MvcContrib;
using MySolution.ViewModels;
namespace MySolution.Models.Extensions
{
public static class RowAttributeExtensions
{
public static Hash GetRowAttributes(this MySolution.ViewModels.Model)
{
string onclickFunctionBody = "{window.location.href = '/MyController/MyAction?id=" + Model.Id + "'; return false;}";
Hash hash = new Hash(onclick => onclickFunctionBody)
return hash;
}
}
}
在客户端,这将采取以下形式:
@Html.Grid(Model).RowAttributes(row => row.Item.GetRowAttributes()).Columns(column =>
{
column.For(c => c.Col1);
column.For(c => c.Col2);
...
})