Razor 仅为Webmatrix中包含值的字段过帐
我已经创建了一个搜索页面,它根据查询字符串参数中设置的参数搜索我的数据库。搜索页面工作得很好,但当我希望在中添加越来越多的搜索参数时,我不希望URL中填充空白查询字符串Razor 仅为Webmatrix中包含值的字段过帐,razor,webmatrix,Razor,Webmatrix,我已经创建了一个搜索页面,它根据查询字符串参数中设置的参数搜索我的数据库。搜索页面工作得很好,但当我希望在中添加越来越多的搜索参数时,我不希望URL中填充空白查询字符串 假设我有一个包含10个搜索选项的表单,但只想指定2个,是否可以只将这2个选项发布到URL而不是全部10个选项?如果使用JavaScript进行请求,您可以这样做。你甚至不需要表格。下面是一个简单的例子,它使用jQuery作为JavaScript(简化事情): @{ } $(函数(){ $(“按钮”)。单击(函数(){ var u
假设我有一个包含10个搜索选项的表单,但只想指定2个,是否可以只将这2个选项发布到URL而不是全部10个选项?如果使用JavaScript进行请求,您可以这样做。你甚至不需要表格。下面是一个简单的例子,它使用jQuery作为JavaScript(简化事情):
@{
}
$(函数(){
$(“按钮”)。单击(函数(){
var url=[location.protocol,'/',location.host,location.pathname].join('';
var queryAdded=false;
$('input[type=text]')。每个(函数(){
if($(this.val()!=“”){
url+=查询添加的?'&':'?';
url+=$(this.prop('name')+'='+$(this.val();
queryAdded=true;
}
});
location.href=url;
});
});
@Html.TextBox(“字段1”)
@Html.TextBox(“字段2”)
@Html.TextBox(“字段3”)
点击
另外,我必须补充一点,我目前没有使用AJAX发布此表单。太好了,谢谢Mike。这一切都有道理,但是你能解释一下“.join(“”)”部分的作用吗?它使用指定的分隔符(如果没有指定分隔符,则使用逗号)将数组的元素组合成字符串。看这里:好的,太好了。所以我可以让页面发布到自己,但是我试图修改url变量,让它发布到不同的页面,我没有运气。我尝试删除数组(不确定为什么要使用数组来构建URL?)并用字符串“www.facebook.com”替换eg,但这也不起作用?在该网站上,主机名将解析为“stackoverflow.com/”。路径名
将在此页面上解析为“问题/…”。因此,如果您想在现有站点中发布到Page2.cshtml,请将“location.pathname”替换为“Page2.cshtml”。我已经编辑了上面的代码以删除路径名,并包括“contact.cshtml”,我想在其中提交querystring参数,但它不起作用?
@{
}
<!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>