Asp.net mvc 从URL';s使用MVC框架

Asp.net mvc 从URL';s使用MVC框架,asp.net-mvc,razor,Asp.net Mvc,Razor,我有一个MVC5应用程序,它显示100多个唯一URL的列表。用户可以排序、搜索并最终从列表中单击URL,在新窗口中启动网站。我希望能够跟踪每次有人点击该列表中的URL。URL列表正在按预期填充。查看下面的代码: <table class="table table-condensed table-hover table-responsive table-striped"> <tr> <th class="col-md-1">

我有一个MVC5应用程序,它显示100多个唯一URL的列表。用户可以排序、搜索并最终从列表中单击URL,在新窗口中启动网站。我希望能够跟踪每次有人点击该列表中的URL。URL列表正在按预期填充。查看下面的代码:

<table class="table table-condensed table-hover table-responsive table-striped">
        <tr>
            <th class="col-md-1">
                @Html.ActionLink(" Name", "Index", new { sortOrder = ViewBag.ReportNameSortParam, SelectedReportCategory = ViewBag.SelectedReportCategory, FindReportName = ViewBag.FindReportName}, new { @class = "glyphicon glyphicon-sort", @title = "sort by name" })
            </th>
        </tr>

        @foreach (var item in Model)
        {
            if (ViewBag.counter == "")
            {
                ViewBag.rowType = "normalRow";
                ViewBag.counter = "1";
            }
            else {
                ViewBag.rowType = "alternateRow";
                ViewBag.counter = "";
            }
            <tr class=@ViewBag.rowType>
                <td class="col-md-1" title="@Html.DisplayFor(modelItem => item.Report_Description) : @Html.DisplayFor(modelItem => item.SLA)">
                    <a href='@item.Report_Link' target="_blank">@Html.DisplayFor(modelItem => item.Report_Name)</a>
                </td>
            </tr>
        }

</table>

@ActionLink(“名称”、“索引”,新{sortOrder=ViewBag.ReportNameSortParam,SelectedReportCategory=ViewBag.SelectedReportCategory,FindReportName=ViewBag.FindReportName},新{@class=“glyphicon glyphicon sort”,@title=“按名称排序”})
@foreach(模型中的var项目)
{
如果(ViewBag.counter==“”)
{
ViewBag.rowType=“normalRow”;
ViewBag.counter=“1”;
}
否则{
ViewBag.rowType=“alternateRow”;
ViewBag.counter=“”;
}
}

当用户通过视图执行此操作时,跟踪用户单击的最佳方法是什么?在我的表中有一个名为“Hits”的列,每当单击该URL时,我都希望该列递增1。理想情况下,在用户单击URL后,我希望列表保持在原来的位置,而不必通过点击另一个控制器然后重新填充来刷新。如何通过视图写入上的数据库?

如前所述。。。捕获单击的每个链接的单击事件,并向相关控制器和操作执行Ajax post

   $(document).ready(function () {
      $(document).on('click', 'a', function () {
        var linkID = $(this).attr("id");

            $.ajax({
                type: "POST",
                url: "@Url.Action("YourAction", "YourController")",
                data:
                {
                    linkid: linkID
                }
            });
        });
    });

希望有帮助。

如前所述。。。捕获单击的每个链接的单击事件,并向相关控制器和操作执行Ajax post

   $(document).ready(function () {
      $(document).on('click', 'a', function () {
        var linkID = $(this).attr("id");

            $.ajax({
                type: "POST",
                url: "@Url.Action("YourAction", "YourController")",
                data:
                {
                    linkid: linkID
                }
            });
        });
    });

希望有帮助。

考虑建立一个操作方法,接收URL并重定向到最终目的地:

<a href='Redirect?id=@item.ID&url=@item.Report_Link' target="_blank">@Html.DisplayFor(modelItem => item.Report_Name)</a>

请注意,如果您的URL使用任何特殊字符,可能会出现某些编码。。。这可能意味着您必须在客户端进行一些编码。最好测试一下以确认。

考虑使用一个操作方法来接收URL并重定向到最终目的地:

<a href='Redirect?id=@item.ID&url=@item.Report_Link' target="_blank">@Html.DisplayFor(modelItem => item.Report_Name)</a>

请注意,如果您的URL使用任何特殊字符,可能会出现某些编码。。。这可能意味着您必须在客户端进行一些编码。测试一下以确认这一点很好。

点击链接时执行Ajax帖子我同意@Wheels 73,这项工作是为Ajax执行Ajax帖子点击链接时执行Ajax帖子我同意@Wheels 73,这项工作是为Ajax感谢@Wheels 73的帖子。我有一个问题要问你。当Ajax函数“POSTS”时,我的URL列表是否需要重新加载,或者Ajax帖子是否会在幕后执行所有操作而不会导致我重新加载列表?@GRU119-否。。你的名单将保持不变。这就是Ajax的魅力所在。它的主要功能之一是允许在不必更新当前视图的情况下发布帖子。。或者在某些情况下,允许您更新主视图中包含的部分视图,而无需刷新整个页面。我使用了您的示例,效果非常好!你就是那个人@Wheels73!非常感谢你!谢谢@Wheels73的帖子。我有一个问题要问你。当Ajax函数“POSTS”时,我的URL列表是否需要重新加载,或者Ajax帖子是否会在幕后执行所有操作而不会导致我重新加载列表?@GRU119-否。。你的名单将保持不变。这就是Ajax的魅力所在。它的主要功能之一是允许在不必更新当前视图的情况下发布帖子。。或者在某些情况下,允许您更新主视图中包含的部分视图,而无需刷新整个页面。我使用了您的示例,效果非常好!你就是那个人@Wheels73!非常感谢你!谢谢你的帖子。我将尝试走Ajax路线。如果我能让它工作起来,我一定会发布我的答案。谢谢你的回复。谢谢你的帖子。我将尝试走Ajax路线。如果我能让它工作起来,我一定会发布我的答案。我感谢你的答复。