【问题标题】:in hyperlinkfield, how to query string escape values?在超链接字段中,如何查询字符串转义值?
【发布时间】:2012-03-06 20:58:19
【问题描述】:

我在GridView 中有一个超链接字段,其中包含DataNavigateUrlFormatString="blahblah/dostuff.aspx?id={0}"。但后来我遇到了一个案例,其中替换 {0} 的字段中有一个加号。它不会为查询字符串转义,所以现在它看起来像一个空格而不是一个加号。

我认为如果包含与号、等号或百分号,也会出现类似的问题。

问:有没有办法对参数进行查询字符串转义?

我想我可以把它变成TemplateFieldEval。充其量是混乱和丑陋的。这似乎是一个会一直出现的问题。有没有一种干净的方法可以逃脱?

【问题讨论】:

    标签: asp.net gridview hyperlink


    【解决方案1】:

    经过一番搜索,我得出的结论是,没有简单的解决方案。您可以使用没有模板字段的 Eval 直接生成 URL。有人建议您处理 RowDataBound 事件并找到正确的列并修复 URL,但这对我来说似乎是非常丑陋的解决方案。

    需要大量工作的最简洁的解决方案是创建一个类,其唯一目的是提供 GridView(您甚至可以将其直接放在后面的代码中)并在后面的代码中用 C# 代码对属性进行编码。这就像在 MVC 中创建一个 ViewModel 只是为了提供一个特定的视图。

    【讨论】:

    • 我通过使用 eval 让它工作,但它看起来相当迂回和丑陋。使用数据绑定事件似乎更难看,因为一半代码在 aspx 页面中,一半在代码隐藏中,另外,据我所知,您必须按数字而不是名称来获取列,这会创建如果我们稍后添加一列,则会出现维护陷阱。我认为最终的答案是我做的方式和它会得到的一样好。很高兴知道我并没有以不必要的艰难方式来做这件事,但我更希望你刚刚告诉我一些我可以调用的魔法函数,它可以做到干净!
    • 我希望我知道这样的功能:(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多