带有postfunction的MVC Html.ActionLink?

我正在检查是否有人为Html.ActionLink编写了一个MVC扩展,你可以传入Post参数,如:

 

这将使链接像正常一样呈现,但是有一个onClick事件,它提交一个也呈现的表单,其中包含Action,Controller和Route Values的Action url以及Post Parameters中的其他隐藏输入,如下所示:

 Click me 

我希望将用户重定向到可能包含大量数据的各种页面。 不仅从页面到页面,而且从电子邮件到页面也是如此。 这将是高度可重用的,我认为会清理很多代码,并且如果它已经漂浮在那里,将节省大量时间来编写它。 我讨厌在不需要的时候重新制作轮子。

ActionLink仅用于创建 。 如果它已经在表格内,你要求的东西会爆炸。 如果不是那么最好将链接作为表单内的提交按钮,而不是使用javascript(javascript和电子邮件不相处很好)。

您可以创建表单并将其附加到DOM的末尾。 这可以通过部分视图或通过javascript完成。

老实说,我建议你不要使用POST。 如果您保留大部分数据并且只需要检索所述数据所需的ID,那么您就不应该在actionlink中传递太多数据。

Ajax.ActionLink非常适合发布请求。 要刷新页面,您可以创建一个刷新页面的函数(例如function reload(){ windows.location.reload();} )。 它看起来像这样。

 @Ajax.ActionLink("DiaplyName", "Action", new { parameters to post }, new AjaxOptions { HttpMethod = "POST", InsertionMode = InsertionMode.Replace, OnComplete="reload();"}) 

注意:您需要引用相应的脚本以使用ajax或jQuery代码。

这段代码对我有帮助,并节省了我的一天..我改进了它,它帮助我冒充用户..这里是吼叫,我做了什么..

  <% if (Session["SessionUserImpersonate"] != null && Session["SessionUserImpersonate"] != "" && Session["SessionUserImpersonate"] == "Yes") { BLL.Models.User userold = new BLL.Models.User(); userold = (BLL.Models.User)Session["SessionUserOld"]; %> (Impersonated as <%=Website.Backoffice.SessionHelper.Session_User.UserName != null ? Website.Backoffice.SessionHelper.Session_User.UserName:"" %> ,  
- finish impersonated session
)    <%} %>