C# 如何从url获取参数

C# 如何从url获取参数,c#,asp.net,sharepoint,C#,Asp.net,Sharepoint,我正在编写一个aspx,让用户检查文件名并创建一个具有该名称的文件 网址是 /sites/usitp/_layouts/CreateWebPage.aspx?List=%7b74AB081E-59FB-45A5-876D- 284607DA03C6%7d&amp;RootFolder=%3bText=%27SD_RMDS%27 如何解析参数“Text”并在文本框中显示 <div> <asp:TextBo

我正在编写一个aspx,让用户检查文件名并创建一个具有该名称的文件

网址是

/sites/usitp/_layouts/CreateWebPage.aspx?List=%7b74AB081E-59FB-45A5-876D-
                             284607DA03C6%7d&amp;RootFolder=%3bText=%27SD_RMDS%27
如何解析参数“Text”并在文本框中显示

<div>
    <asp:TextBox id="Name" runat="server" />
</div>

aspx文本框是这样的,我试过了

<asp:TextBox id="Name" runat="server" text=<%$Request.QueryString['Text']%>></asp:TextBox>>
>
但它不起作用

有人能帮我吗?

事实上,是的

string value = Name.Text;

如果要从Querystring获取文本值,需要使用:

var text = (string)Request.QueryString["Text"];
然后可以将其绑定到TextBox Name的文本属性:

 Name.Text = text;
更新:
只能在PageLoad事件中初始化服务器控件值。

要获取http get参数的值:

string testParameter = Request.QueryString["Text"];
然后设置文本框文本

Name.Text = testParameter

另外,它强烈建议不要直接从url获取内容,因为恶意内容可能通过这种方式注入到您的页面中。ASP对此提供了一些保护,但它仍然被认为是一种良好的做法。

您的url中的根文件夹和文本之间似乎缺少一个&所以请将其更改为此-

/sites/usitp/_layouts/CreateWebPage.aspx?List=%7b74AB081E-59FB-45A5-876D-284607DA03C6%7d&amp;RootFolder=%3b&Text=%27SD_RMDS%27
在约束方面,你的观点几乎是正确的,这应该做到-

<asp:TextBox id="Name" runat="server" text='<%#Request.QueryString["Text"]%>'></asp:TextBox>
尽管直接在页面加载中这样做可能更容易,但这应该按照您的意愿执行-

Name.Text = Request.QueryString["Text"];

如果您无法访问代码隐藏(SharePoint中的常见限制),则可以使用JavaScript“hack”使用URL值填充文本框

要实现这一点,请将此代码放在
.aspx
页面底部的文本框中:


var strTextBoxId=“”;
var oTextBox=document.getElementById(strTextBoxId);
如果(oTextBox){
oTextBox.value=“”;
}
否则{
//调试
警报(“ID为“”+strTextBoxId+“'的元素不存在”);
}

请注意,这是而不是好的做法,只是在您无法提供最佳做法解决方案时的一种解决方法。

这是正确的URL吗?看起来您缺少RootFolder和Text参数之间的(&T),因此它将看不到文本parmater,并且您将无法将其撤回。您知道页面生命周期吗?你可以在PageLoad事件中初始化你的服务器控件。不,新手:P,你能告诉我如何将PageLoad()写入该aspx文件吗?但是我想在aspx标记中写一行,好主意吗?名称.Text在?这个sharepoint文件中。aspx在布局文件夹中,我如何找到控制它的cs文件?你能帮我吗?谢谢!但它不起作用,在哪里可以调用函数DataBind()?我可以把这个代码放在哪里?你的文本框在你的filename.aspx页面上,对吗?因此,您应该有一个名为filename.aspx.cs的代码隐藏文件-默认情况下,您会在其中获得一个页面加载函数(如果没有,则必须添加此函数)-在页面加载中添加DataBind()调用。名称如何。Text=Request.QueryString[“Text”];?我如何使用它?这样做(推荐的方式)-忽略上面的所有内容,只需将这一行添加到Page_Load方法中-构建它,现在应该可以工作了;在函数Page_Load()中,这将正常工作?请澄清“只能在PageLoad事件中初始化服务器控件值”。我想我知道你的意思,但它对OP来说并不清楚。页面生命周期包含下一个事件:PreInit、Init、PreLoad、Load、Control(postback)事件、LoadComplete、PreRender、SaveStateComplete、Render、Unload。正在捕获特定操作的所有事件。PageLoad事件是页面稳定、已初始化并已重建状态的时间。因此,现在是从控件回发事件以外的源设置控件值的时候了。谢谢你添加这些信息。当然,从事件“PageLoad”开始的方法可以自行更改控件。这很酷!那么我应该在@bowang nothing中写些什么呢?这就是本文的妙处。哎呀,我只是在按钮下添加了脚本,然后出现了运行时错误,js文件出现了问题?(我只是在末尾添加了它们,没有做更多的事,甚至没有编辑标记)
Name.Text = Request.QueryString["Text"];