我对MVC很新。我有一个Html.Grid,其中包含一些列。我想添加一个新标题,其标题为“New Column”。此列将为每一行设置一个按钮。应根据另一列的值禁用该按钮例如,如果某行的“status”列为“complete”,则应启用该按钮,否则应禁用该按钮。单击该按钮时,将调用“MyController”中的“myMethod”。 我视图中的现有代码如下所示:
Html.Grid(Model.Results)
.RowAttributes(row => new Hash(@class => row.Item.Priority1 ? "redgrid" : row.IsAlternate ? "alternategrid" : "grid"))
.Columns(column =>
{
column.For(c =>
(c.ExistsInPatRec == true) ?
Html.ActionLink(c.CaseNumber.ToString(), "Details", new { id = c.CaseNumber }, new { target = "_blank" })
: Html.Label(c.CaseNumber.ToString())
)
.Named("Case Number").SortColumnName("CaseNumber")
.Encode(false)
;
//I have to add my column here.It will be disabled if "Status"="Incomplete"
column.For(c => c.Status).Named("Status").SortColumnName("Status")
.Attributes(x =>
{
if (x.Item.Status == "Complete")
return new Hash(style => "background-color:#33CC00");
else if (x.Item.Status == "Incomplete")
return new Hash(style => "background-color:orange");
else
return new Hash(style => "");
});
column.For(c => c.SomeId);
我添加了这一行:
column.For(c => "<button onclick='location.href='www.gmail.com';'>gmail</button>").Named("My New Column").Encode(false);
但它没有用。当我点击按钮时,它不会把我带到链接。
有人能帮助我吗?
答案 0 :(得分:2)
还没有完成整个代码但是试试这个:
变化:
column.For(c => "<button onclick='location.href='www.gmail.com';'>gmail</button>").Named("My New Column").Encode(false);
要:
column.For(c => "<button onclick=\"javascript:window.open('http://gmail.com');\">gmail</button>").Named("My New Column").Encode(false);
这至少应该使您的链接有效。由于您的按钮没有正确形成,因此您的链接无效。
要触发Controller Actions,您需要使用以下类型的代码。
column.For(c => "<input type=\"button\" value=\"Go Somewhere Else\" onclick=\"location.href='<%: Url.Action(\"myMethod\", \"myController\") %>'\" />").Encode(false);