2012-03-30 25 views
1

我正在构建一个可以下载歌曲的GridView。因此,我使用超链接fileld并使用DateNavigateUrlFormatString来使用如何动态设置DataNavigateUrlFormatString?或如何在网页上评估Page.User.Identity.Name?

E.G.

DataNavigateUrlFormatString="~/uploads/{0}" 

现在,

我需要Page.User.Identity.Name结合成DateNavigateUrlFormatString

例如,

DataNavigateUrlFormatString="~/uploads/UserName/{0}" which Page.User.Identity.Name depending on the user login. 

我试图从代码中访问DataNavigateUrlFormatString后面,但我不能。 我试图使用eval如

 '~/uploads/" <%# Eval("Page.User.Identity.Name") %> /{0}' 

,这并不正常工作。

希望有人能指出我。

谢谢,

大号

最终溶液

 <asp:TemplateField HeaderText="Play"> 
       <ItemTemplate> 
        <asp:HyperLink ID="HyperLink2" runat="server" NavigateUrl = '<%# String.Format("~/UserUploads/{0}/",Page.User.Identity.Name)+ "/" + Eval("Song_Name") %>' Text="Play" > 
        </asp:HyperLink> 

       </ItemTemplate> 
      </asp:TemplateField> 
+0

您应该添加你的“最终解决方案”作为回答,并接受它,而不是从scartag – Rich 2012-07-09 14:12:39

+0

错了一个@Rich你没看过这表明我们我的回答后,有对话的意见?我的答案导致了最终的解决方案。如果你阅读他的问题,你会意识到他没有详细解释,但我的回答能够指导他最终的解决方案。尽管我会编辑我的答案以包含他的解决方案。无论谁来这里看,都清楚。 – scartag 2012-07-10 00:39:32

+0

我认为,在Stackoverflow上,你的意思是编辑你的答案是正确的,所以这个问题很容易被新手阅读,而不是保留不正确的答案和评论链。也许你应该编辑你的答案看起来像“最终解决方案”,而不是劳伦斯添加第二个答案?如果那是你担心的事情,那会保留你的代表。 – Rich 2012-07-11 09:20:26

回答

0

DataNavigateUrlFormatString预计占位符(多个)来自字段在控制的数据源。

我的建议是,既然你已经知道你正在建立的网址,你可以设置超链接控制的NavigateUrl属性。

NavigateUrl = '<%# String.Format("~/UserUploads/{0}/",Page.User.Identity.Name)+ "/" + Eval("Song_Name") %>' 
+0

我得到这个错误,当我试图把..我使用HyperLinkField ..任何想法?解析器错误消息:数据绑定表达式仅在具有DataBinding事件的对象上受支持。 System.Web.UI.WebControls.HyperLinkField没有DataBinding事件。 – lawphotog 2012-03-30 23:37:16

+0

@Laurence Nyein你可以将它更改为TemplateColumn并添加一个LinkBut​​ton?这会很有效,因为它有一个数据绑定事件,而且这个代码很容易处理它。 – scartag 2012-03-30 23:43:18

+0

对,现在我改变了HyperLink控制..它不会给我解析器错误了。但是,URL变成/ uploads/UserName/MrABC而不是/uploads/MrABC/a.mp3。第二个是正确的。有什么想法吗? – lawphotog 2012-03-30 23:44:34