【问题标题】:Posting only for fields that contain a value in Webmatrix仅针对包含 Webmatrix 中的值的字段发布
【发布时间】:2013-09-27 13:45:39
【问题描述】:

我创建了一个搜索页面,它根据查询字符串参数中设置的参数搜索我的数据库。搜索页面效果很好,但是当我希望在其中添加越来越多的搜索参数时,我不希望 URL 被空白查询字符串填充。

假设我有一个包含 10 个搜索选项的表单,但只想指定 2 个,是否可以只将这 2 个发布到 URL 而不是全部 10 个?

【问题讨论】:

  • 另外,我必须补充一点,我目前没有使用 AJAX 来发布此表单。

标签: razor webmatrix


【解决方案1】:

如果您使用 JavaScript 发出请求,则可以执行此操作。您甚至不需要为此填写表格。这是一个使用 jQuery 作为 JavaScript 的简单示例(为了简化事情):

@{

}

<!DOCTYPE html>

<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title></title>
        <script type="text/javascript" src="~/Scripts/jquery-1.9.1.min.js"></script>
        <script>
            $(function () {
                $('button').click(function () {
                    var url = [location.protocol, '//', location.host, location.pathname].join('');
                    var queryAdded = false;
                    $('input[type=text]').each(function () {
                        if ($(this).val() != '') {
                            url += queryAdded ? '&' : '?';
                            url += $(this).prop('name') + '=' + $(this).val();
                            queryAdded = true;
                        }
                    });
                    location.href = url;
                });
            });
        </script>
    </head>
    <body>
        <div>
            @Html.TextBox("field1")
        </div>
        <div>
            @Html.TextBox("field2")
        </div>
        <div>
            @Html.TextBox("field3")
        </div>
        <div>
            <button>Click</button>
        </div>
    </body>
</html>

【讨论】:

  • 太好了,谢谢迈克。这一切都说得通,但你能解释一下“.join('')”部分的作用吗?
  • 它使用指定的分隔符将数组的元素组合成一个字符串(如果没有指定,则使用逗号)。见这里:w3schools.com/jsref/jsref_join.asp
  • 不错不错。所以我能够让页面发布到自己,但我正在尝试修改 url 变量,以便将其发布到不同的页面,而我的运气为零。我试过删除数组(不知道为什么要使用数组来构建 URL?)并用字符串“www.facebook.com”代替例如,这也不起作用?
  • hostname 将解析为该站点上的“stackoverflow.com/”。 pathname 将解析为此页面上的“问题/...”。因此,如果您想在现有站点中发布到 Page2.cshtml,请将 'location.pathname' 替换为 'Page2.cshtml'
  • 我已经编辑了您上面的代码以删除路径名,并包含“contact.cshtml”,这是我要提交查询字符​​串参数的地方,但它不起作用?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-13
  • 2013-04-10
  • 2015-08-04
  • 1970-01-01
  • 1970-01-01
  • 2019-06-29
  • 2017-05-02
相关资源
最近更新 更多