来自MVC.Grid的模式视图(局部)

时间:2019-01-28 23:31:09

标签: javascript c# asp.net-mvc razor grid.mvc

我有一个cshtml页面(索引),该页面显示带有数据行的Grid.MVC。当用户单击ID行时,我需要显示一个弹出窗口,其中提供了更多详细信息。我的JavaScript代码中有一个断点,但从未被击中。现在,代码将调用控制器而不是函数。

cshtml代码:

<div class="container-fluid">
    @Html.Grid(Model).Columns(columns =>
{
    columns.Add(c => c.task_id).Encoded(false).Titled("ID").Sanitized(false).Sortable(true).RenderValueAs(c => @Html.ActionLink(c.task_id.ToString(), "viewTransfers", new { taskId=c.task_id }, new { @onclick = "getTransfers('" + c.task_id + "')"}));
    columns.Add(c => c.company).Titled("Company");
})Filterable(false).WithPaging(int.Parse(EPH.Common.Util.GetConfigSetting("PageSize"))).Selectable(true)

</div>

<script type="text/javascript">
    $(function() {
        $('#getTransfers').click(function (e) {
            e.preventDefault();
            $(this).modal();
        });
    });
</script>

控制器:

public ActionResult ViewTransfers(int taskId)
{
    var myQuery = from transfers in db.fals_ftp_watcher_transfers
        where transfers.task_id == taskId
        orderby transfers.imp_date ascending
        select transfers;
    return View(myQuery);
}

1 个答案:

答案 0 :(得分:1)

有几件事情你需要在这里改变。

您的JavaScript正在寻找ID为getTransfers且不存在的dom元素。

我将对其进行更改,以使您生成的链接具有getTransfers类。

您的操作链接将变为:

@Html.ActionLink(c.task_id.ToString(), 
    "viewTransfers", "controllerName", 
    new { taskId = c.task_id }, 
    new { @class = "getTransfers" })

请注意,您需要将"controllerName"更改为控制器名称。

您的JavaScript将变为:

<script type="text/javascript">
    $(function() {
        $('.getTransfers').click(function (e) {
            e.preventDefault();
            $(this).modal();
        });
    });
</script>