为每个(部分)视图生成唯一的ID

时间:2018-12-12 16:20:27

标签: c# asp.net-mvc razor

我正在开发MVC应用程序,我的客户希望在每个屏幕上都有唯一的ID。他将使用此ID作为他编写的手册的参考。 我正在寻找一种通用的方法,我不想在每个单独的视图/部分上对ID进行硬编码。

为了使其更加复杂,使用jQuery ajax调用来加载局部视图,并且这些局部视图还应该具有唯一的ID(因此,在这种情况下,应该显示局部的ID,而不是包含页面的ID)

有人可以建议我采用通用策略来归档此文件吗? 不用担心ID的格式,它可以是任何东西(例如GUID的一部分)

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以哈希部分视图名称。这样可以为每个视图提供一个很好的一致(唯一)名称。如果将视图放入标记中,则会在每次渲染视图时进行计算。

类似的东西:

@(((RazorView)ViewContext.View).ViewPath.GetHashCode())

应根据视图的名称为您生成一个数字。有点脏又乱,但我认为可以满足您的目的。

道歉。在测试中,以上内容似乎仅适用于父视图。我会把它放在评论中,但我还没有足够的声誉。但这可能会让您走上正确的轨道。

尽管沿着相似的行,您可以使用以下命令根据文件名执行与上述类似的操作:

@Path.GetFileNameWithoutExtension(Server.MapPath(VirtualPath)).GetHashCode()

在我的测试中,哪一个确实适用于ajax的部分视图