Asp.net mvc 设计|可维护|条件视图| MVC

Asp.net mvc 设计|可维护|条件视图| MVC,asp.net-mvc,Asp.net Mvc,有一个视图,我需要在其中显示视图中的地址详细信息 Name Street State , City, Washington 现在,这个地址的顺序需要根据每个国家的不同而有所不同,就像他们想要的中国一样 Name State , City, Washington Street 因此,我们所做的是将if-else语句写在视图中,并具有格式,之前没有问题,因为这仅适用于一个或两个国家 但现在我看到每个国家都有同样不同的要求,这将使我的观点非常沉重,无法维持 有人能提供好的模式使其更易于维护吗?比如

有一个视图,我需要在其中显示视图中的地址详细信息

Name
Street
State , City, Washington
现在,这个地址的顺序需要根据每个国家的不同而有所不同,就像他们想要的中国一样

Name
State , City, Washington
Street
因此,我们所做的是将if-else语句写在视图中,并具有格式,之前没有问题,因为这仅适用于一个或两个国家

但现在我看到每个国家都有同样不同的要求,这将使我的观点非常沉重,无法维持


有人能提供好的模式使其更易于维护吗?比如,每个国家都有不同的部分视图,并加载该部分视图等。好的,最好的选择是为不同的国家有不同的视图,并根据某个标识符从控制器返回。这将保持代码的可维护性。如果-其他的 如果不是所有字段都按动态顺序排列,则可以为每个国家/地区创建多个局部视图。在主视图中保留静态字段,在局部视图中保留动态字段

现在,如果您有太多的国家/地区,并且不想维护单个视图,那么另一个选项是创建一个HtmlHelper扩展,并使用该扩展在代码中动态创建视图,并返回可在视图中使用的MvcHtmlString,如下所示

 @Html.CountryFields('us')
编辑:

还请检查下面的链接,它在您的场景中可能很有用(使用上述多个视图的好例子)


这里只是一个想法,也许它能帮助你,希望如此

您可能需要添加新的
表Address(Id,Format)
,它将存储不同的可用格式,并将表
AddressFormat(AddressId,CountryId)
作为与
国家的联接表

例如:

Name
Street
State , City, Washington
可以格式化为“{0}
{1}
{2}、{3}、{4}”、名称、街道、州、城市等

对于中国来说,{0}
{2}、{3}、{4}
{1}、名称、街道、州、城市

因此,在表地址中,您将有这些数据

Id            Format
1             {0}<br/>{1}<br/>{2},{3},{4}
2             {0}<br/>{2},{3},{4}<br/>{1}
所以这里的想法是参数索引是相同的,但是在显示它们的同时要对它们重新排序


希望这个想法能给你一个提示

谢谢Hadi,但是如果我们使用HTML.Raw,那么会有安全问题,因为内容不会正确编码?你没有问题,因为你正在显示由你控制的数据,最终用户不会添加详细信息,如果您希望允许他们添加html,那么您可以在显示属性时使用html.Encode。感谢所有宝贵的帮助inputs@Rajesh如果我的回答解决了您的问题,请将其标记为答案,如果您还有任何疑问或问题,请询问他们
@Html.Raw(string.Format(Model.Format,Model.Name,Model.Street,Model.State,Model.City,Model.WashingtonField))