我的一个网站在分页之上有一些非常复杂的排序功能,各种变量加起来形成一个相当复杂的 URL,管理起来非常痛苦。有没有办法有效管理 QUERY_STRING?
我的意思是...如果url是index.php?catid=3&sort=date&year=2009&page=2并且我希望用户跳转到第3页,或者更改排序方法......我将如何保留剩余的变量,而不用 if/else 条件检查每个单独的变量,并在链接到第 3 页或替代排序方法的链接中回显它们。
有没有办法可以从 asp.net MVC 中的查询字符串中删除 null 或空键?例如,我有一个页面,我在结果表上过滤数据,如果我搜索 John,查询字符串将重新显示为:
candidates?FirstName=John&LastName=&Credit=false&Previous=false&Education=&Progress=
Run Code Online (Sandbox Code Playgroud)
并不是
candidates?FirstName=John
Run Code Online (Sandbox Code Playgroud)
我研究了 URL 路由,但我不确定它是否应该用于像这样的装饰性的东西,或者是否可以使用它来实现我所要求的目标。
如何创建带有查询字符串参数的链接:
/path/to/view?param=358&name=Something+with+spaces
Run Code Online (Sandbox Code Playgroud)
在电梯里?我知道你可以简单地写它,我正在寻找一种明智的方法,对空格和其他特殊字符进行编码。例如:
Link("path/to/view").param("param", 358).param("name", "Something with spaces")
Run Code Online (Sandbox Code Playgroud)
预先感谢,艾格姆。
我正在使用查询字符串过滤共享点列表,因为我需要检查类似 FieldValue!=Red 的条件是否可以实现?
还是仍然有其局限性?
.aspx?FilterName=EYHealthIndicator&FilterMultiValue=红色;黄色&&FilterField2=ContentType& FilterValue2!=任务
我开始使用 RestEasy,但遇到了一个我似乎无法找到答案的问题。如果我有 2 个方法都解析为相同的路径(在本例中为 /path1/path2/path3),但它们都有不同数量的查询参数,RestEasy 是否能够确定使用哪个方法?
@GET
@NoCache
@Produces({
MediaType.APPLICATION_JSON
})
@Path("/path1/path2/{path3}")
public String getResults1(
@PathParam("path3") String path3,
@QueryParam("query1") @DefaultValue("") String query1,
@QueryParam("query2") String query2,
@QueryParam("query3") @DefaultValue("25") int query3) {
...
}
@GET
@NoCache
@Produces({
MediaType.APPLICATION_JSON
})
@Path("/path1/path2/{path3}")
public String getResults2(
@PathParam("path3") String path3,
@QueryParam("query1") @DefaultValue("") String query1,
@QueryParam("query2") @DefaultValue("5") Integer query2) {
...
}
Run Code Online (Sandbox Code Playgroud)
我已经做了一些测试,昨天似乎一切都运行良好,并且它可以选择正确的路径,但现在我开始看到它每次都走错误的路径。
这是应该处理的事情,还是我应该把它吸收并放入一种方法中并自己进行检查?
我想将查询字符串隐藏到我的控制器的操作中。
在我的应用场景中是这样的:
1)我已在新窗口中打开新操作:
var check="Particular String"
var url = rootUrl("Home/Preview?Docs=" + check);
window.open(url, '_blank');
Run Code Online (Sandbox Code Playgroud)
2)在控制器方面,我在控制器的操作中使用了一些代码,如下所示:
public ActionResult Preview(string Docs)
{
TempData["Docs"] = Docs;
return RedirectToAction("UnInvoicedPreview");
}
Run Code Online (Sandbox Code Playgroud)
我的查询::1)打开新窗口时,它在开头显示查询字符串(直到它不重定向到另一个操作时)。
2) 我不想在 URL 中显示 QueryString。
3)有什么方法可以隐藏查询字符串或者我们可以加密它吗?
在标准 URI 查询字符串中,我是否允许=在查询组件的值部分中使用未编码的等号 ( )。换句话说,我是否允许在第一个等号之后但在&分隔组件之前的另一个等号?例如,以下有效吗?
index.html?param1=a_value_with_=_sign¶m2=12=13
从我阅读什么是有效的,什么不在 URI 查询中?,它总结了 RFC 3986,在组件中使用 equals不会“与保留字符作为分隔符的用途相冲突”,因为在这种情况下很明显,只有每个组件中的第一个 equals 用作分隔符。所以我认为我应该能够做到这一点。
这是我的公共方法(APIUtility)
public static string GetRequestData(string key, string defaultVal)
{
if (HttpContext.Current != null && HttpContext.Current.Request != null)
{
return HttpContext.Current.Request[key] == null || HttpContext.Current.Request[key].Trim() == "" ? defaultVal : HttpContext.Current.Request[key].Trim();
}
else
{
return defaultVal;
}
}
Run Code Online (Sandbox Code Playgroud)
让 html 使用 javascriptlocation.href(aa.json?key=value&key1=value1....)去 url 我的类功能
在函数 aa 中使用了string getUrlValue = APIUtility.GetRequestData(key name)get Querystring。
用户使用手机浏览器(OppoBrowser或safari..)通过我的html页面跳转到服务器功能Unable to get querystring为空,但如果使用电脑正常。
希望你能明白我想表达的意思。
我是一个全新的 fastify,但我有一个 fastify 服务器正在运行。我想解析查询字符串,例如:
http://fake.com/?user=123&name=ali
Run Code Online (Sandbox Code Playgroud)
我想从上面的 URL 中获取“用户”和“名称”值。我目前的代码是这样的:
fastify.route({
method: 'GET',
url: '/',
handler: async (request, reply) => getCompanyUsers(request, reply, services)
});
Run Code Online (Sandbox Code Playgroud)
我想获取“user”和“name”的值,然后将这些值传递给 getCompanyUsers 函数。
任何帮助表示赞赏。
谢谢
request.querystring node.js query-string querystringparameter fastify
我想在window.location.search 不重新加载文档的情况下进行更新,然后根据window.location.search.
当用户单击按钮时,该按钮的onclick事件会触发以下函数:
window.history.pushState({action : 'myAction'}, document.title, '?action=myAction');
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好。window.location.search浏览器 URL 栏中的更新。
但是我找不到检测此更新的通用后台事件侦听器-类似于onhashchange查询字符串。
我能想到的最好的是:
window.history.pushState({action : 'myAction'}, document.title, '?action=myAction');
window.history.pushState({action : 'myAction'}, document.title, '?action=myAction');
window.history.back();
window.addEventListener('popstate', () => console.log(event.state.action));
Run Code Online (Sandbox Code Playgroud)
这有效,但我相信必须有更优雅的方法。
query-string ×10
asp.net ×2
asp.net-mvc ×2
c# ×2
fastify ×1
filter ×1
html ×1
http ×1
java ×1
javascript ×1
jquery ×1
lift ×1
list ×1
node.js ×1
optimization ×1
php ×1
popstate ×1
pushstate ×1
resteasy ×1
routes ×1
sharepoint ×1
uri ×1
url ×1
url-routing ×1