为MVC5 Url.Action添加onclick事件

时间:2014-09-13 18:13:41

标签: onclick asp.net-mvc-5 url.action

@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生成的网址添加客户端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>

1 个答案:

答案 0 :(得分:2)

不是,不。

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

<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标记。那个标记是什么? 是您用于点击处理程序的内容。同样,您的客户端点击处理程序在客户端代码上运行,而不是在服务器端代码上运行。最好将两者分开。

相关问题