1

我对 MVC 很陌生。我有一个 Html.Grid,其中包含一些列。我想添加一个新列,其标题为“新列”。该列的每一行都有一个按钮。应该根据另一列的值禁用该按钮.例如,如果一行的“状态”列是“完成”,则应启用该按钮,否则应禁用该按钮。单击按钮时,将调用“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);

但它不起作用。当我单击按钮时,它不会带我进入链接。

有人能帮助我吗?

4

1 回答 1

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);

这至少应该使您的链接正常工作。由于您的按钮格式不正确,您的链接无法正常工作。

要触发控制器动作,您需要使用以下类型的代码。

column.For(c => "<input type=\"button\" value=\"Go Somewhere Else\" onclick=\"location.href='<%: Url.Action(\"myMethod\", \"myController\") %>'\" />").Encode(false);
于 2013-08-26T08:28:32.590 回答