将隐藏值传递给控制器​​(asp.netmvc)

时间:2015-12-28 13:30:43

标签: ajax asp.net-mvc

尝试使用Ajax.Beginform传递值但由于某种原因无法工作。

我在做什么:

  1. 我正在进行ajax调用,返回一个id并替换一个隐藏元素。

    Ajax: Ajax.BeginForm("Action1", "Controller1", new AjaxOptions { InsertionMode
    = InsertionMode.Replace, UpdateTargetId = "pageId" })

  2. 隐藏元素(超出上述Ajax.BeginForm):

     <input type="hidden" name="pageId" id="pageId" value=""/>
    
    1. 现在,我想使用那个pageId(在隐藏值中)并使用另一个Ajax.BeginForm将其传递给另一个动作。

      Ajax.BeginForm("Action2", "Controller1”)) { <input type="hidden" name="pageId" id="pageId" value=""/> <input type="submit" /> }

    2. 控制器Action2如下所示:

           public void Action2(string pageId)
           {
      
           }
      

      但这显然不起作用。你有什么建议?

1 个答案:

答案 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>