尝试使用Ajax.Beginform传递值但由于某种原因无法工作。
我在做什么:
我正在进行ajax调用,返回一个id并替换一个隐藏元素。
Ajax: Ajax.BeginForm("Action1", "Controller1", new AjaxOptions { InsertionMode
= InsertionMode.Replace, UpdateTargetId = "pageId" })
隐藏元素(超出上述Ajax.BeginForm
):
<input type="hidden" name="pageId" id="pageId" value=""/>
现在,我想使用那个pageId(在隐藏值中)并使用另一个Ajax.BeginForm将其传递给另一个动作。
Ajax.BeginForm("Action2", "Controller1”))
{
<input type="hidden" name="pageId" id="pageId" value=""/>
<input type="submit" />
}
控制器Action2如下所示:
public void Action2(string pageId)
{
}
但这显然不起作用。你有什么建议?
答案 0 :(得分:1)
我认为我理解你所遇到的问题。如果我错了,请纠正我。
第一个设置您的pageid的Ajax调用
<input type="checkbox" id="chkbox[]" name="chkbox[]">
$checkbox = $_POST['chkbox'];
$id = "('" . implode( "','", $checkbox ) . "');" ;
$sql = "UPDATE [table] SET [col] = [value] WHERE id IN " . $id . ";
其次,这里是您的Pageid设置的地方。当您按下下面的提交按钮时,设定值将被发布到控制器。
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
@using (Ajax.BeginForm("Foo", "FooController", new AjaxOptions {
HttpMethod = "Post",
OnSuccess = "success"
}))
{
<input type="submit" value="Save" id="btnsubmit" />
}
[HttpPost] // you said you return a string here
public string Foo()
{
return "1";
}
<script type="text/javascript">
function success(result) {
$('#pageId').val(result);
}
</script>