有一个视图,我需要在视图中显示地址详细信息
Name
Street
State , City, Washington
现在,这个地址的顺序对于每个国家都需要有所不同,例如他们想要的格式低于中国
Name
State , City, Washington
Street
所以如果在视图中使用else语句并且具有格式,那么所做的就是写的,之前没有问题,因为这仅适用于一个或两个国家
但现在我看到每个国家都有同样的不同要求,这会让我的观点非常沉重,难以维持
有人可以提供良好的模式以使其更易于维护,例如每个国家/地区都有不同的局部视图并加载部分视图等
答案 0 :(得分:0)
好的最好的选择是为不同的国家/地区提供不同的视图,并根据某些标识符从控制器返回它们。这样可以保持代码的可维护性。确保不要使用if - else。 如果不是所有字段都是动态排序的,您可以为每个国家/地区创建多个部分视图。在主视图上保持静态视图,在局部视图中保持动态。
现在如果您有太多的国家/地区并且不想维护单个视图,那么另一个选项是创建一个HtmlHelper扩展并使用它在代码中动态创建视图并返回MvcHtmlString,可以在查看如下图所示。
@Html.CountryFields('us')
编辑:
另请查看以下链接,它可能在您的方案中很有用(使用上述多个视图的好例子)
http://brianreiter.org/2011/03/23/simple-asp-net-mvc-globalization-with-graceful-fallback/
答案 1 :(得分:0)
这里只是一个想法,也许它可以帮助你,希望如此
您可能需要添加新的tables Address(Id,Format)
来存储不同的可用格式,并将表AddressFormat(AddressId,CountryId)
添加为与Country
表
例如:
Name
Street
State , City, Washington
可以格式化为"{0}<br/>{1}<br/>{2},{3},{4}",Name,Street,State,City,...
和中国为"{0}<br/>{2},{3},{4}<br/>{1}",Name,Street,State,City
所以在表格地址中你将拥有这些数据
Id Format
1 {0}<br/>{1}<br/>{2},{3},{4}
2 {0}<br/>{2},{3},{4}<br/>{1}
在您的视图中,您可以使用
@Html.Raw(string.Format(Model.Format,Model.Name,Model.Street,Model.State,Model.City,Model.WashingtonField))
所以这里的参数索引是相同的,但想要在显示它们时重新排序
希望这个想法能给你一个提示