1
@Html.PagedListPager(Model, page =>Url.Action("GetOrderDetails", 
 new { page, sortOrder = ViewBag.CurrentSort }),
  PagedListRenderOptions.EnableUnobtrusiveAjaxReplacing(new AjaxOptions() 
   { HttpMethod = "GET", UpdateTargetId = "gridTable" }))

我在 MVC5 视图中有上面的代码。

问题:是否可以通过向 Url.Action 代码添加一些额外参数来为上述 Url.Action 生成的 URL 添加客户端 onclick 事件处理程序?如果是,那么我会在 Url.Action 的哪个位置添加它?

上面 PagedListPager 发出的 HTML 如下。

<ul class="pagination"><li class="active"><a>1</a></li><li><a data-ajax="true" data-ajax-method="GET" 
data-ajax-mode="replace" data-ajax-update="#gridTable" href="/Order_Details/GetOrderDetails?page=2&
amp;sortOrder=asc">2</a></li><li><a data-ajax="true" data-ajax-method="GET" data-ajax-mode="replace"
data-ajax-update="#gridTable" href="/Order_Details/GetOrderDetails?page=3&amp;sortOrder=asc">3</a>
</li></ul>
4

1 回答 1

2

不是真的,不。

这是因为点击事件发生在 HTML 中的元素Url.Action上,而不是创建元素。它只是发出一个字符串。如果此字符串是元素的一部分,则可以向该元素添加单击处理程序。例如,如果你这样做:

<a id="someLink" href="@Url.Action(parameters)">click here</a>

然后,您可以在客户端代码中添加点击处理程序。ASP.NET MVC 通常默认包含 jQuery,因此您可能可以使用它:

$('#someLink').click(function () {
    // handle the click here
});

通过向 Url.Action 代码添加一些额外的参数

作为一般建议,您需要将服务器端代码和客户端代码分开。你的视图有很多地方可以放置客户端代码,没有必要用它污染你的服务器端代码。而且您会发现,如果您将关注点分开,您的整个项目会变得更容易维护。

编辑:您已经更新了问题,看起来您正在使用一种叫做PagedListPager. 我不熟悉这个 HTML 助手,但大概它会向页面发出一些 HTML 标记。那个标记是什么? 就是您将用于单击处理程序的内容。同样,您的客户端点击处理程序在客户端代码上运行,而不是服务器端代码。最好将两者分开。

于 2014-09-13T18:18:48.990 回答