【问题标题】:Get value of a query string from asp.net mvc controller action to <script type="text/javascript">从 asp.net mvc 控制器操作获取查询字符串的值到 <script type="text/javascript">
【发布时间】:2009-08-14 08:17:08
【问题描述】:

我从我的 Asp.net mvc 操作结果中传递了一个名为“RowTobeHighLighted”的查询字符串。我要做的是,我必须将查询字符串值从该控制器操作获取到文本/javascript 类型的脚本。我尝试在 javascript 下使用简单的 Request.Querystring() 。但这不起作用。

是否可以从控制器操作中获取查询字符串值。或者,是否可以在&lt;script type="text/javascript"&gt;标签下获取viewdata的值。

【问题讨论】:

    标签: asp.net javascript asp.net-mvc


    【解决方案1】:

    不,Request.QueryString 不起作用,因为它只是服务器端。

    你有几个选择

    • 您可以使用 Request.QueryString 将值嵌入到脚本中

      var myValue =

    • 您可以将查询字符串值作为视图数据传递给视图,然后像这样在您的 javascript 中使用它

      var myValue =

    • 或者您可以查看 javascript 中的查询字符串

      var qs = new Querystring() var myValue = qs.get("myValue")

    当然,有了所有这些,您应该注意跨站脚本攻击。

    【讨论】:

    • 非常感谢。我还找到了另一种解决方案。解决方法如下。
    【解决方案2】:

    在客户端:使用Querystring
    服务端:(给JS提供值):

    <%= "var RowTobeHighLightedUrl = '" + Request.QueryString["RowTobeHighLighted"] + "';"%>
    

    如果 RowTobeHighLighted 应该是 JavaScript Escape(不是 HtmlENcode!)。

    【讨论】:

    • 非常感谢。我还找到了另一种解决方案。解决方法如下。
    【解决方案3】:

    TempData 用于此类临时消息。

    在您的控制器中:

    TempData["RowToHighlight"] = rowNumber;
    

    然后在视图中:

    <% foreach (var row in Model) { %>
    <tr>
        <td id="row_<%= row.id %>"<%= (row.id == (int)TempData["RowToHighlight"]) ? " class="highlighted" : "" %>>my row</td>
    </tr>
    <% } %>
    

    然后,如果您使用 jQuery,例如淡出或其他(在您的 jQuery document.ready 中):

    <% if (TempData["RoToHighlight"] != null) { %>
    $("#row_<%= (int)TempData["RowToHighlight"] %>").fadeOut();
    <% } %>
    

    当然,一定要使用任何必要的转义和编码等。

    【讨论】:

      猜你喜欢
      • 2013-07-29
      • 2017-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-12
      • 1970-01-01
      • 1970-01-01
      • 2010-10-23
      相关资源
      最近更新 更多