C# 是否有任何方法可以隐藏查询字符串,使其不显示在使用asp.net MVC的搜索和筛选中
我实现了一个基本的排序-带有排序的过滤 控制器中的索引代码C# 是否有任何方法可以隐藏查询字符串,使其不显示在使用asp.net MVC的搜索和筛选中,c#,asp.net-mvc,search,query-string,querystringparameter,C#,Asp.net Mvc,Search,Query String,Querystringparameter,我实现了一个基本的排序-带有排序的过滤 控制器中的索引代码 public ViewResult Index(string sortOrder, string currentFilter, string searchString, int? page) { ViewBag.CurrentSort = sortOrder; ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ?
public ViewResult Index(string sortOrder, string currentFilter, string searchString, int? page)
{
ViewBag.CurrentSort = sortOrder;
ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
ViewBag.DateSortParm = sortOrder == "Date" ? "date_desc" : "Date";
if (searchString != null)
{
page = 1;
}
else
{
searchString = currentFilter;
}
ViewBag.CurrentFilter = searchString;
var students = from s in db.Students
select s;
if (!String.IsNullOrEmpty(searchString))
{
students = students.Where(s => s.LastName.Contains(searchString)
|| s.FirstMidName.Contains(searchString));
}
switch (sortOrder)
{
case "name_desc":
students = students.OrderByDescending(s => s.LastName);
break;
case "Date":
students = students.OrderBy(s => s.EnrollmentDate);
break;
case "date_desc":
students = students.OrderByDescending(s => s.EnrollmentDate);
break;
default: // Name ascending
students = students.OrderBy(s => s.LastName);
break;
}
int pageSize = 3;
int pageNumber = (page ?? 1);
return View(students.ToPagedList(pageNumber, pageSize));
}
代码运行良好
我想问的是,有没有办法实现相同的代码,而不向最终用户显示查询参数,如图所示
是否可以使用视图模型(表单集合或基于路由)隐藏此参数?是否存在与使用查询字符串的这种方式的安全性相关的问题
-请注意,这个示例只是我想使用contoso university(Microsoft demo)做的一个演示,在这个上下文中,我不需要隐藏查询字符串,但在另一个上下文中(使用ado.net存储过程),可以显示一些数据库体系结构-
你想过使用带有字符串的模型绑定器吗?你可以在页面加载后通过jQuery删除查询字符串的额外部分。如果有任何代码片段或代码可以遵循,那么这将是一个很好的起点,谢谢。你到底想“隐藏”它吗?用户在文本框中键入“a”,以便在另一个上下文(使用ado.net存储过程)中的查询字符串中预期它会显示一些数据库体系结构,从而无需任何理由就获得了downvote。但是,我希望我的努力能对某人有所帮助。我感谢你的努力,我没有否决你的答案。因为这对我有帮助,所以我将其否决,使其等于否决。查询字符串是用户在文本框中键入的值-它没有任何“敏感”之处。OP不能使用POST。这里不涉及“SQL注入”(使用EF)。加密它毫无意义(而且无论如何也不可能)。您在此处所述与OP的问题无关。@StephenMuecke他根据此处的答案更新了问题,请随意分享我不知道的内容;)OP无法“隐藏”查询字符串-如果是,则该值将不会发送到服务器,并且控制器方法将不起作用。为什么OP认为他们会这么做毫无意义。