繁体   English   中英

将变量从JavaScript传递到控制器

[英]Pass variable from JavaScript to Controller

我有这些复选框,我正在使用JQuery来获取其值

<div>
    <p> Type:
        <label>
            <input type = "checkbox" name = "types[]" class="filterType" value="Single"/>Single
        </label>
        <label>
            <input type = "checkbox" name="types[]" class="filterType" value="Double"/>Double
        </label>
        <label>
            <input type = "checkbox" name="types[]" class="filterType" value="Suite" />Suite
         </label> </p>

   <input type="submit" value="filter" onclick="exefunction()" />
</div>  


<script>
function exefunction() {
        var checkedVals = $('.filterType:checkbox:checked').map(function () {
            return this.value;
        }).get();
        var typesAtt=checkedVals.join('-');
        }
</script>

如何将typesAtt变量传递给RoomController ,在其中可以应用数据库中的过滤器。 这是Index.cshtml视图

与一切相同。 您只需发出http请求,然后传递您想要的任何内容(作为查询参数或POST请求时为正文的一部分)。

如果使用jquery发出ajax请求,则必须在前端应用程序中编写一个处理程序。

您需要将输入元素保留在表单标签内,并使用正确的输入元素名称。

@using(Html.BeginForm("Filter","Home"))
{
    <div>
        <p>
            Type:
            <label>
                <input type="checkbox" name="types" value="Single" />Single
            </label>
            <label>
                <input type="checkbox" name="types" value="Double" />Double
            </label>
            <label>
                <input type="checkbox" name="types" value="Suite" />Suite
            </label>
        </p>    
        <input type="submit" value="filter"  />
    </div>

}

现在,在“过滤器”操作方法中,您可以有一个称为types的参数,它是一个字符串数组类型。

[HttpPost]
public ActionResult Filter(string[] types)
{
    // to do : Return something
}

用户提交表单时,将使用所选复选框的值填充types参数。 例如,如果用户选择了“ Single”和“ Suite”,则types参数将是一个由2个项组成的字符串数组,即“ Single”和“ Suite”

要记住的重要一点是,输入元素的名称应与操作方法参数名称匹配。

在客户端:

$.post("YourUrl",typesAtt,function(){
})

在服务器端:

[HttpPost]
public ActionResult YourActionName(string data)
{

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM