使用javascript的ASP.Net MVC 3.0 Ajax.ActionLink动态对象路由值

HaB*_*aBo 10 asp.net-mvc asp.net-mvc-3

0项目

在我看来,我有一个隐藏的文件,有一个UserID.该用户ID是在动作时生成的(因此事先不知道)

一旦这个隐藏字段有一个值,我想将该值用作actionlink routevalue.我可以使用jquery选择器来完成它.

我隐藏的领域是

<input id="NewUserID" type="hidden" value="80">
Run Code Online (Sandbox Code Playgroud)

我的ajax.ActionLink是

@Ajax.ActionLink("Edit", "EditUser", "User", new { UserID = "$('#GetNewPatientID').val()" },
        new AjaxOptions
        {
            OnSuccess = "ShowEditUserForm",
            UpdateTargetId = "EditUserDetails",
            InsertionMode = InsertionMode.Replace,
            HttpMethod = "Get"
        }, new { @class = "button", id = "EditUserButton" }) 
Run Code Online (Sandbox Code Playgroud)

知道这是否可行?

Dar*_*rov 12

在服务器上生成操作链接时,您可以为UserID路由值添加一些特殊的占位符:

@Ajax.ActionLink(
    "Edit", 
    "EditUser", 
    "User",    
    new { 
        UserID = "__userid__" 
    },
    new AjaxOptions {
        OnSuccess = "ShowEditUserForm",
        UpdateTargetId = "EditUserDetails",
        InsertionMode = InsertionMode.Replace,
        HttpMethod = "Get"
    }, 
    new { 
        @class = "button", 
        id = "EditUserButton" 
    }
) 
Run Code Online (Sandbox Code Playgroud)

然后当你在javascript中为隐藏字段赋值时,你也可以更新动作链接href:

$('#EditUserButton').attr('href', function() {
    return this.href.replace('__userid__', $('#NewUserID').val());
});
Run Code Online (Sandbox Code Playgroud)

  • 如果您需要再次单击链接并传递其他值,您如何再次查找和更改该值? (4认同)

Tom*_*uλa 7

也许这样的事情会起作用.将您的操作链接放在div中,并在客户端使用jquery进行修改.

<div id="ajaxTest">
@Ajax.ActionLink("Edit", "EditUser", "User", new { UserID = "$('#GetNewPatientID').val()" }, 
        new AjaxOptions 
        { 
            OnSuccess = "ShowEditUserForm", 
            UpdateTargetId = "EditUserDetails", 
            InsertionMode = InsertionMode.Replace, 
            HttpMethod = "Get" 
        }, new { @class = "button", id = "EditUserButton" })  
</div>

<script type="text/javascript"> 
     $(document).ready(function(){ 
        $("#ajaxTest a").click(function (event) { 
            $(this).attr('href', "/EditUser/Edit?UserId='+ $('#NewUserId).val() +'"); 
     }); 
     }); 
</script>
Run Code Online (Sandbox Code Playgroud)