我可以在不使用查询字符串或会话的情况下将值传递给页面吗?

时间:2011-11-12 05:43:35

标签: c# asp.net .net

我创建了一个Web应用程序,其中有两个菜单加载同一页面。我需要检查页面中的条件,以便我可以根据传递给该页面的变量加载不同的数据。但是,我不想使用查询字符串,因为这需要使用不同的URL,这会干扰SEO。

有没有办法在不使用查询字符串或会话数据的情况下执行此操作?我需要在主页面中单击不同的链接时传递不同的值。

7 个答案:

答案 0 :(得分:2)

使用PreviousPage属性中的引用,可以在源页面上搜索控件并提取其值。您通常使用FindControl方法执行此操作。

使用PreviousPage.FindControl(“yourcontrolname”)

这些链接可以帮助您

How to: Pass Values Between ASP.NET Web Pages

PreviousPage Property

答案 1 :(得分:1)

您可以使用javascript to post data to you page,也可以使用隐藏字段或Cookie

答案 2 :(得分:1)

如果URL与查询字符串参数有关(并且您不想要会话 - 例如由于进程内存储),那么除了另外两个答案之外,使用网络爬虫增加排名的另一种方法是{{3 }}

答案 3 :(得分:0)

您可以通过多种方式传递值。使用会话,cookie,查询字符串,隐藏输入。 我个人觉得存储菜单导航的查询字符串不是问题,除非他知道确切的查询字符串参数。

你可以尝试其他方法, Passing Values between webforms

答案 4 :(得分:0)

尝试window.location.hash:https://developer.mozilla.org/en/DOM/window.location

您可以在URL中的#之后存储数据。这就是Twitter的作用。

答案 5 :(得分:0)

如果您的查询字符串问题只是更改网址,您可以使用post方法使用隐藏输入发送数据。像这样:

<form  action="products.aspx" method="post">
...
<input type="hidden" id="field1" value="value1"/>
</form>

或者使用ajax。您可以通过带有ajax的javascript发送http请求。在这种情况下,没有网址更改或其他东西。这是一个例子:

<script type="text/javascript">
function loadXMLDoc()
{
var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("mainDiv").innerHTML=xmlhttp.responseText; //changing the menu
    }
  }
params="field1="+document.getElementById("field1").value;
xmlhttp.open("POST","products.aspx",true);
xmlhttp.send(params);
}
</script>

答案 6 :(得分:0)

我建议调查canonical links.

使用它,你可以有两种不同的URL形式,例如bob.aspx和bob.aspx?input = whatever,搜索引擎只会在其索引中包含其中一种(例如第一种)。