【问题标题】:Default value in URL request or not [closed]URL请求中的默认值与否[关闭]
【发布时间】:2013-02-07 08:28:35
【问题描述】:

请提出您对编码风格的想法。

在 Web 表单中,有一个选项,但不是必须选择的。其值为 1、2 和“全部”。值 “All”是加载表单时的默认值,“All”表示 1 和 2。 根据选择的值,请求将被发送到服务器进行处理。服务器将解析此值并返回结果响应。在用户选择“全部”值的情况下,我有两种方法:

  1. 不要在请求中包含选项值。我的示例 URL 将是 "../Process.aspx"。服务器将检测并知道用户选择了“全部”值。
  2. 在请求中包含带有特定值的选项值(例如:-1)。我的示例 URL 将是 "../Process.aspx?option=-1"。服务器将检测并知道 如果值为 -1,则表示用户已选择“全部”值。

请为此建议我最好的解决方案。谢谢。

【问题讨论】:

    标签: c# asp.net .net coding-style


    【解决方案1】:

    变体 1 对我来说似乎更自然。它没有指定过滤器,所以自然应该返回 all 元素。

    这也与 RESTful API 的工作方式一致:http://server/api/files 将返回所有文件。 http://server/api/files/test.txt 将返回一个特定的文件。

    【讨论】:

      【解决方案2】:

      我会选择选项一的变体。

      如果选项的值未知或未指定,则使用默认值。如果选项值为 -1(或与默认选择关联的任何值),请确保以相同的方式处理此问题。在未知值的情况下,我也会记录该值。即,如果您使用记录器,请将其记录为调试信息。当您添加新值并且无法弄清楚系统似乎忽略这些的方式时,这通常会变得非常方便。

      将未知值作为默认值处理可确保带有已弃用选项的书签/链接在一定程度上仍然有效,从而提供比错误消息更好的用户体验

      【讨论】:

        【解决方案3】:

        我会采取方法一。

        首先检查是否设置了option参数。如果没有,请在您的代码中为其分配一个默认值。 如果已分配,请检查输入并进行处理。这样,您还需要在 1 个地方管理您的代码。 (默认值)

        【讨论】:

          【解决方案4】:

          “All”应该被赋予一个数值(如3)。元素的标记应该如下所示:

          <select name="fieldname">
              <option value="1">Value1</option>
              <option value="2">Value2</option>
              <option value="3">All</option>
          </select>
          

          服务器应该读取 POST 响应并使用 switch 控制语句来决定如何处理这些值。

          switch(postvar):
          
          case 1: // processing for 1 value goes here
          
          case 2: // processing for 2 value goes here
          
          case 3: // processing for "All" value goes here
          
          endswitch;
          

          【讨论】:

          • 一般拒绝 GET 值没有任何意义。它可能对安全相关信息有意义,但可以简单地使用 paket 嗅探器来获取该信息。 在 URL 中包含某些内容但将其放在正文中的唯一原因是避免敏感信息被您的应用程序的用户意外共享,例如当他从浏览器复制 URL 并将其提供给他的好友并且 URL 包含他的会话 ID 或类似内容时。
          • “因为这可能会让某人深入了解您的应用程序” - 让我们在这里现实一点。潜在的黑客无论如何都会检查 POST 请求并获得对应用程序的相同洞察力。在 GET 中包含这些非安全性、用户可设置的参数会更好,因为它允许用户简单地共享 URL,以便其他人可以看到相同的结果集。
          • 同意。我删除了对 GET 值的毫无根据的拒绝。
          • 我更喜欢 All=0,这样您以后可以扩展以添加选项 3、4、5 等,而无需更改 All 的值
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多