我正在编写一个aspx,让用户检查文件名并创建一个具有该名称的文件
网址是
/sites/usitp/_layouts/CreateWebPage.aspx?List=%7b74AB081E-59FB-45A5-876D-
284607DA03C6%7d&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>>
但它无效
任何人都可以帮助我吗?
答案 0 :(得分:17)
获取http get参数的值:
string testParameter = Request.QueryString["Text"];
然后设置文本框文本
Name.Text = testParameter
此外强烈建议不要直接从网址中获取内容,因为恶意内容可能会以这种方式注入您的网页。 ASP提供了一些保护,仍然被认为是一种很好的做法。
答案 1 :(得分:5)
如果您想从Querystring获取文本值,则需要使用:
var text = (string)Request.QueryString["Text"];
然后,您可以将其绑定到TextBox Name的Text属性:
Name.Text = text;
<强>更新强> 您只能在PageLoad事件上初始化服务器控件值。
答案 2 :(得分:0)
实际上,它会是
string value = Name.Text;
答案 3 :(得分:0)
你似乎错过了一个&amp;在RootFolder和Text之间的URL中,将其更改为 -
/sites/usitp/_layouts/CreateWebPage.aspx?List=%7b74AB081E-59FB-45A5-876D-284607DA03C6%7d&RootFolder=%3b&Text=%27SD_RMDS%27
在绑定方面你几乎是对的,这应该做到 -
<asp:TextBox id="Name" runat="server" text='<%#Request.QueryString["Text"]%>'></asp:TextBox>
但是,如果你现在运行它,它将无法工作,因为你需要像你这样在你的PageLoad中调用DataBind()
protected void Page_Load(object sender, EventArgs e)
{
DataBind();
}
这应该按照您的意愿进行,尽管直接在您的PageLoad中执行此操作可能更容易 -
Name.Text = Request.QueryString["Text"];
答案 4 :(得分:0)
如果您无法访问后面的代码(SharePoint中的常见限制),那么您可以使用JavaScript“hack”使用URL值填充文本框。
要实现此目的,请将此代码放在.aspx
页面的最底部,并带有文本框:
<script type="text/javascript">
var strTextBoxId = "<%=Name.ClientID%>";
var oTextBox = document.getElementById(strTextBoxId);
if (oTextBox) {
oTextBox.value = "<%=Request.QueryString["Text"].Replace("\"", "\\\"")%>";
}
else {
//debug
alert("element with ID '" + strTextBoxId + "' does not exist");
}
</script>
请注意,这是不良好做法,只是在您无法做出最佳实践解决方案的时候。