繁体   English   中英

带有帖子功能的MVC Html.ActionLink?

[英]MVC Html.ActionLink with post functionality?

我正在检查是否有人为Html.ActionLink编写了MVC扩展,您可以在其中传递Post参数,例如:

<% Html.ActionLink("Click me", "Index", "Home", new { MyRouteValue = "123" }, null, new { postParam1 = "a", postParam2 = "b" }); %>

这将使链接呈现为正常状态,但具有一个onClick事件,该事件将提交一个呈现的表单,该表单具有用于Action,Controller和Route Values的Action url,以及Post参数的其他隐藏输入,例如:

<a href="#" onClick="$('#theform').submit(); return false;">Click me</a>
<form id="theform" action="/Home/Index/123" method="post">
   <input type="hidden" name="postParam1" value="a">
   <input type="hidden" name="postParam2" value="b">
</form>

我希望将用户重定向到可能包含大量数据的各个页面。 不仅从页面到页面,而且从电子邮件到页面也是如此。 这将是高度可重用的,并且我认为这将清除大量代码,并且如果已经在其中浮动,则将节省大量时间编写此代码。 我讨厌在不需要时重新创建轮子。

ActionLink仅用于创建<a> 您要的内容如果已经存在于表单中,则会被炸掉。 如果不是那么最好将链接设置为表单内的提交按钮,而不是使用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"];      
        %>
    <span class="FL">(Impersonated as <%=Website.Backoffice.SessionHelper.Session_User.UserName != null ? Website.Backoffice.SessionHelper.Session_User.UserName:"" %>  , </span>

    <form class="FL" id='frmid' action="/Index/Login?username=<%=userold.UserName%>&password=<%=userold.Password%>&IsImpersonate=No"  method="post">
                <a class="TxtRed" style="cursor:pointer;" onclick="$('#frmid').submit(); return false;" > - finish impersonated session  </a>
                </form>   
                ) &nbsp;&nbsp;
    <%} %> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM