10

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

网址是

/sites/usitp/_layouts/CreateWebPage.aspx?List=%7b74AB081E-59FB-45A5-876D-
                             284607DA03C6%7d&RootFolder=%3bText=%27SD_RMDS%27

如何解析参数“文本”并在文本框中显示?

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

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

<asp:TextBox id="Name" runat="server" text=<%$Request.QueryString['Text']%>></asp:TextBox>>

但它没有用

任何人都可以帮助我吗?

4

5 回答 5

19

要获取 http get 参数的值:

string testParameter = Request.QueryString["Text"];

然后设置文本框文本

Name.Text = testParameter

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

于 2012-08-20T12:49:48.080 回答
5

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

var text = (string)Request.QueryString["Text"];

然后您可以将其绑定到 TextBox Name 的 Text 属性:

 Name.Text = text;

更新: 您只能在 PageLoad 事件上初始化服务器控件值。

于 2012-08-20T12:49:28.007 回答
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>

请注意,这不是好的做法,只是当您无法执行最佳实践解决方案时的一种解决方法。

于 2012-08-20T14:23:03.547 回答
0

其实本来就是

string value = Name.Text;
于 2012-08-20T12:45:27.297 回答
0

您似乎在 RootFolder 和 Text 之间的 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>

但是,如果您现在运行它,它将无法正常工作,因为您需要像这样在 PageLoad 中调用 DataBind()

protected void Page_Load(object sender, EventArgs e)
{
    DataBind();
}

这应该按照您的意愿执行,尽管像这样直接在 PageLoad 中执行此操作可能更容易 -

Name.Text = Request.QueryString["Text"];
于 2012-08-20T13:20:55.283 回答