当请求参数不存在时,如何处理请求?

时间:2014-01-09 14:05:31

标签: c# asp.net

我通过网址发送id然后通过“请求”获取ID,从一个页面重定向到另一个页面。我遇到的问题是有两种方法可以访问该页面。

  1. 通过链接向您发送,其中包含网址中的ID。 (这有效)
  2. 直接进入页面,因此不会带来任何身份证明。 (这不会发生错误)
  3.   

    异常详细信息:System.InvalidOperationException:Nullable对象   必须有价值。

    当您重定向到方案1并直接进入方案2时,链接的外观如何。

    1. http://localhost/red/time/time.aspx?id=154
    
    2. http://localhost/red/time/
    
        if (!IsPostBack)
        {
    
            //Bladdra(4, 0);
            txtTidrapportnr.Text = Request["id"];
    
            if (Request != null)
            {
                Hamta(General.ToInt(txtTidrapportnr.Text).Value);
                Visa();
                btnNy.Focus();
            }
            else
            {
                Bladdra(4, 0);
                Visa();
                btnNy.Focus();
            }
    
    
        }
    

    我的问题是如何让方案1和2中的页面都能正常工作。看起来像是

      

    if(Request!= null)

    不正确。

2 个答案:

答案 0 :(得分:1)

你做错了是因为检查你试图用文本框值赋值的空值,正确的做法方法如下:

if (!IsPostBack)
    {

        //Bladdra(4, 0);
        //txtTidrapportnr.Text = Request["id"];

        if (Request["id"] != null)
        {
            txtTidrapportnr.Text =Convert.ToString(Request["id"]);

            Hamta(General.ToInt(txtTidrapportnr.Text).Value);
            Visa();
            btnNy.Focus();
        }
        else
        {
            Bladdra(4, 0);
            Visa();
            btnNy.Focus();
        }


    }

答案 1 :(得分:0)

如果你的页面只能在id请求参数上运行,那么你必须像其他人建议的那样自己检查它的存在 - 你无法阻止页面被自动访问,因为没有什么能阻止你点击来自浏览器的URL。

如果参数不存在,您应该优雅地处理它。我使用的典型方法是,如果URL不包含我需要的所有内容,则重定向到已知的安全页面(例如主页),但我想您也可以在页面上显示警告消息。

相关问题