我正在开发MVC应用程序,我的客户希望在每个屏幕上都有唯一的ID。他将使用此ID作为他编写的手册的参考。 我正在寻找一种通用的方法,我不想在每个单独的视图/部分上对ID进行硬编码。
为了使其更加复杂,使用jQuery ajax调用来加载局部视图,并且这些局部视图还应该具有唯一的ID(因此,在这种情况下,应该显示局部的ID,而不是包含页面的ID)
有人可以建议我采用通用策略来归档此文件吗? 不用担心ID的格式,它可以是任何东西(例如GUID的一部分)
谢谢!
答案 0 :(得分:2)
您可以哈希部分视图名称。这样可以为每个视图提供一个很好的一致(唯一)名称。如果将视图放入标记中,则会在每次渲染视图时进行计算。
类似的东西:
@(((RazorView)ViewContext.View).ViewPath.GetHashCode())
应根据视图的名称为您生成一个数字。有点脏又乱,但我认为可以满足您的目的。
道歉。在测试中,以上内容似乎仅适用于父视图。我会把它放在评论中,但我还没有足够的声誉。但这可能会让您走上正确的轨道。
尽管沿着相似的行,您可以使用以下命令根据文件名执行与上述类似的操作:
@Path.GetFileNameWithoutExtension(Server.MapPath(VirtualPath)).GetHashCode()
在我的测试中,哪一个确实适用于ajax的部分视图