代码之家  ›  专栏  ›  技术社区  ›  DaveDev

如何为与MVC应用程序结构集成良好的区域实现标签文件?

  •  1
  • DaveDev  · 技术社区  · 14 年前

    背景:

    所以regionA将加载RegionALabels.xml,它的所有文本都将来自于此。RegionB将加载RegionBLabels.xml,依此类推。

    我正在考虑通过构造XML文件来实现这一点,以便它遵循与我的应用程序相同的结构。例如,

    <Base> <!--BaseController-->
      <Home> <!--HomeController-->
        <HomePartial1>
          <lblFirstName>text for label with ID lblFirstName</lblFirstName>
          <lblLastName>text for label with ID lblLastName</lblLastName>
        </HomePartial1>
        <HomePartial2>
          <!--a bunch of labels-->
        </HomePartial2>
      </Home>
      <Accounts>
        <AccountsPartial1>
          <!--a bunch of labels-->
        </AccountsPartial1>
        <AccountsPartial2>
          <!--a bunch of labels-->
        </AccountsPartial2>
      </Accounts>
    </Base>
    

            var nodes = from f in
                            (from res in this.XmlConfiguration.Descendants("Base")
                             select res).Descendants("Home")
                        select f;
    
            var HomePartial1Labels = nodes.Elements("HomePartial1").ToList();
    

    问题:

    既然如此,基本上我想问的是,在我尝试实现这个方法之前,是否有人能指出这个方法中任何明显的漏洞?以前处理过这个问题的人能提出更好的建议吗?

    ,我有一个特定的要求来呈现带有多个选项卡的局部视图,每个选项卡都必须显示文本;与该选项卡关联的许多结果。例如,我有3个选项卡:

    Fund
    Company
    Group
    

    如果有人进行搜索,选项卡必须显示搜索词为选项卡返回的结果数,因此如果我搜索“JP Morgan”,它们将变为:

    Fund (10) // 10 funds contain the name 'JP Morgan'
    Company (12) // 12 companies contain the name 'JP Morgan'
    Group (15) // 15 groups contain the name 'JP Morgan'
    

    为了在标签文件中包含文本“Fund”、“Company”和“Group”,我还必须提供“(”and“)”,这意味着我必须使用占位符,并在渲染部分时用实际值替换它。因此XML将开始如下所示:

    <Base> <!--BaseController-->
      <Home> <!--HomeController-->
        <Tabs>
          <lblFundTab>Funds (#value#)</lblFundTab>
          <lblCompanyTab>Company (#value#)</lblCompanyTab>
          <lblGroupTab>Group (#value#)</lblGroupTab>
        </Tabs>
      </Home>
    </Base>
    

    但我觉得这会开始看起来很混乱,有点像黑客。有人能提出更好的建议吗?谢谢。

    1 回复  |  直到 14 年前
        1
  •  1
  •   diarmo    14 年前

    我最近在一个项目中也遇到了同样的情况。

    我实现了一个LabelService,它首先包装了一个“LabelFiles”的单例数组,这些文件在应用程序启动时被加载到内存中。因此,我的代码看起来很相似,但处理的是内存中的对象,而不是xml文件,从而避免了许多潜在的IO问题(锁等)。