0项目
在我看来,我有一个隐藏的文件,其中有一个UserID
。该用户ID是在动作时生成的(因此事先不知道)
一旦这个隐藏字段有值,我想将该值用作actionlink routevalue。我可以使用jquery选择器吗。
我的隐藏字段是
<input id="NewUserID" type="hidden" value="80">
我的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" })
知道这是否可行?
答案 0 :(得分: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"
}
)
然后当您在javascript中为隐藏字段指定值时,您也可以更新操作链接href:
$('#EditUserButton').attr('href', function() {
return this.href.replace('__userid__', $('#NewUserID').val());
});
答案 1 :(得分: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>
答案 2 :(得分:1)
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&gt;的检查。控制器中为0,因此id初始化为-1的原因。如果不满足此条件,则返回“错误”视图。