【问题标题】:Optional parameter in ASP.net 4.0 c#ASP.net 4.0 c# 中的可选参数
【发布时间】:2011-10-06 20:58:19
【问题描述】:

我有一个用 ASP.NET 4.0 构建的网站,目前我有一个带有 URL 的下拉框、一个转到该 URL 并解析文本的按钮,最后是一个带有解析文本的结果框。

我想要做的不是访问我的网站并在下拉框中选择 URL,而是希望将参数作为完整 URL 传递,然后让按钮转到该位置,然后执行它的操作。有点像我可以交给用户的永久链接

例如:

http://localhost:62554/WebSite5/Default.aspx --> http://google.com

google.com 被放入一个变量中(比如说它的MyURL),按钮就像它在下拉框中一样。 **更新的代码:现在在

处收到错误 500
using (StreamReader objReader = new StreamReader(objRequest.GetResponse().GetResponseStream()))

string newURL;
String url;

protected void Page_Load(object sender, EventArgs e)
{

    //Request.Params.Get("newURL").ToString();
    //string url = Request["newURL"];
    //url = Request.QueryString["newURL"].ToString();
    url = Request.QueryString["newURL"].ToString();

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

    //MyURL = deviceCombo.Text;
    //MyURL = Request.Params.Get("");
    //MyURL = Request.Params.Get("newURL");
    //MyURL = newURL;
    //string MyURL = Request.Params["newURL"].ToString();

    WebRequest objRequest = HttpWebRequest.Create(url);
    objRequest.Credentials = CredentialCache.DefaultCredentials;
    using (StreamReader objReader = new StreamReader(objRequest.GetResponse().GetResponseStream()))
    {
        originalText.Text = objReader.ReadToEnd();
    }

    //Read all lines of file
    String[] crString = { "<BR>&nbsp;" };
    String[] aLines = originalText.Text.Split(crString, StringSplitOptions.RemoveEmptyEntries);
    String noHtml = String.Empty;

    for (int x = 0; x < aLines.Length; x++)
    {
        if (aLines[x].Contains(filterCombo.SelectedValue))
        {
            noHtml += (RemoveHTML(aLines[x]) + "\r\n");

        }
    }

    //Print results to textbox
    resultsBox.Text = String.Join(Environment.NewLine, noHtml);
}

有什么想法吗?谢谢

【问题讨论】:

  • 有点像一个永久链接,我可以将它交给用户,而不是让他们访问我的网站并单击下拉框并选择正确的 URL 进行解析。
  • 请注意:切勿针对谷歌进行任何测试。首先,它不好看。其次,更重要的是,根据您进行多少测试,谷歌可能会决定阻止您。我已经看到它发生了。

标签: c# asp.net parameter-passing


【解决方案1】:

您的问题很难理解,但我认为您要做的是在 URL 中传递网站字符串。我认为您想要做的是使用 URL 参数,所以如果他们转到“http://localhost:62554/Website5/default.aspx?newURL=http://google.com”,就好像他们选择了 google .com 在下拉列表中。

后面有什么?在 URL 中被视为 URL 参数,您可以像这样在代码隐藏中访问这些参数:

string newURL = Request.Params.Get("newURL");

【讨论】:

  • 是的,这正是我想做的,但我应该把这段代码放在哪里?
  • 将此代码放在代码隐藏的 page_load 部分中,确保将其包装在 if (!IsPostBack) 中,这样它只会在他们第一次点击页面时发生。
【解决方案2】:

您可以从 Request 对象中获取 URL 变量。

string url = Request["newURL"];

把它放在任何你喜欢的地方,比如 Page_Load

protected void Page_Load(object sender, EventArgs e)
{
    string url = Request["newURL"];
}

【讨论】:

  • 你能发布更多你的代码和你传递的 URL 吗?这应该没问题,问题必须在其他地方。
  • 我用我的代码更新了原始问题,我得到了 url,但它在 'using (StreamReader objReader = new StreamReader(objRequest.GetResponse().GetResponseStream())) '
  • 我认为调用这样的按钮事件处理程序是一个坏主意,您的事件处理程序应该只获取 URL 并将其传递给完成工作的函数。和 page_load 一样,你应该从请求参数中获取 URL,然后调用函数。
猜你喜欢
  • 2012-10-08
  • 2011-03-25
  • 1970-01-01
  • 2011-04-26
  • 2011-03-19
  • 2011-10-28
  • 1970-01-01
  • 2011-04-06
  • 2011-07-24
相关资源
最近更新 更多