Asp.net mvc 使用javascript的ASP.Net MVC 3.0 Ajax.ActionLink动态对象路由值
0项目 在我看来,我有一个隐藏的字段,它有一个Asp.net mvc 使用javascript的ASP.Net MVC 3.0 Ajax.ActionLink动态对象路由值,asp.net-mvc,asp.net-mvc-3,Asp.net Mvc,Asp.net Mvc 3,0项目 在我看来,我有一个隐藏的字段,它有一个用户ID。此用户id是在操作时生成的(因此之前不会知道) 一旦这个隐藏字段有了一个值,我想将该值用作actionlink routevalue。我可以用jquery选择器来完成吗 我隐藏的领域是 <input id="NewUserID" type="hidden" value="80"> 你知道这是否可行吗?也许类似的方法会奏效。将操作链接放在div中,并在客户端使用jquery对其进行修改 <div id="ajaxTest"
用户ID
。此用户id是在操作时生成的(因此之前不会知道)
一旦这个隐藏字段有了一个值,我想将该值用作actionlink routevalue。我可以用jquery选择器来完成吗
我隐藏的领域是
<input id="NewUserID" type="hidden" value="80">
你知道这是否可行吗?也许类似的方法会奏效。将操作链接放在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>
@ActionLink(“编辑”、“编辑用户”、“用户”,新的{UserID=“$('#GetNewPatientID').val()”,
新选择
{
OnSuccess=“ShowEditUserForm”,
UpdateTargetId=“EditUserDetails”,
InsertionMode=InsertionMode.Replace,
HttpMethod=“获取”
},新的{@class=“button”,id=“EditUserButton”})
$(文档).ready(函数(){
$(“#ajaxTest a”)。单击(函数(事件){
$(this.attr('href',“/EditUser/Edit?UserId=”+$(“#NewUserId).val()+”);
});
});
在服务器上生成操作链接时,可以为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"
}
)
然后,当您为javascript中的隐藏字段赋值时,您还可以更新操作链接href:
$('#EditUserButton').attr('href', function() {
return this.href.replace('__userid__', $('#NewUserID').val());
});
Darin提供的答案很好,对我很有帮助,但是正如评论所示,如果您需要再次单击链接并传递不同的值,您如何做到这一点?这是一个要求,如果你是更新部分视图等,所以这里是我如何做到这一点
$(document).ready(function () {
$('#replyMessageButton').click(function () {
var url = $("#replyMessageButton").attr("href")
$("#replyMessageButton").attr("href", TrimToSlash(url) + $("#MessageId").val())
});
});
function TrimToSlash(value) {
if (value.indexOf("/") != -1) {
while (value.substr(-1) != '/') {
value = value.substr(0, value.length - 1);
}
}
return value;
}
@Ajax.ActionLink("Reply", "ReplyMessage", "MessageBox", new { id = -1 },
new AjaxOptions
{
UpdateTargetId = "replyMessageContainer",
InsertionMode = InsertionMode.Replace,
OnBegin = "UpdateDisplay('replyMessage')",
OnFailure = "UpdateDisplay('default')"
},
new { @id = "replyMessageButton" }
)
还实现了对控制器中messageId>0的检查,因此id被初始化为-1。如果不满足此条件,将返回一个“错误”视图。如果需要再次单击链接并传递另一个值,如何再次查找和更改该值?我觉得这是一种有点令人失望的方法,因为这是最好的方法。AJAX调用通常会消耗用户在页面上的输入,并且必须用我自己的字符串来替换()一个神奇的字符串来使用,这是很有技巧的。
$(document).ready(function () {
$('#replyMessageButton').click(function () {
var url = $("#replyMessageButton").attr("href")
$("#replyMessageButton").attr("href", TrimToSlash(url) + $("#MessageId").val())
});
});
function TrimToSlash(value) {
if (value.indexOf("/") != -1) {
while (value.substr(-1) != '/') {
value = value.substr(0, value.length - 1);
}
}
return value;
}
@Ajax.ActionLink("Reply", "ReplyMessage", "MessageBox", new { id = -1 },
new AjaxOptions
{
UpdateTargetId = "replyMessageContainer",
InsertionMode = InsertionMode.Replace,
OnBegin = "UpdateDisplay('replyMessage')",
OnFailure = "UpdateDisplay('default')"
},
new { @id = "replyMessageButton" }
)