ASP.NET MVC-在我的详细信息中使用IF语句



我在详细信息视图中有一个

<tr>
   <td>@Html.DisplayNameFor(model => model.ACTION_STATUS):</td>
   <td>@Html.DisplayFor(model => model.ACTION_STATUS)</td>
</tr>

我该如何应用:

如果Action_status ==,则显示Active elsion如果Action_status == 0,显示不活动,ELES DELETED

我建议使用字典而不是条件。在这种情况下,如果有几个分支,那似乎很容易做到IF。

不是正确的方法。
Dictionary<int, string> data = new Dictionary<int, string>();
data.Add(1, "Active");
data.Add(0, "Inactive");
data.Add(-1, "Deleted");
ViewData["data"]=data;

视图您可以得到它们:

@{
    var Dictionary = (Dictionary<int, string>)ViewData["data"];
 }

并将其显示为 <td>@Dictionary[model.ACTION_STATUS]</td>

我认为此解决方案更干净。

编辑:要将编辑解决到问题。

我认为最好的方法,尤其是现在有3种不同的状态选项,而不仅仅是2(正如我在我的原始答案中建议)。

1)创建类似于Indrit Kello的答案的字典,但将其"静态数据"在您的项目中的某个地方。也许它是从数据库表状态表中加载的。也许是您从配置文件加载的东西,或者它只是在称为" startants.cs"等静态类中进行了硬编码。取决于情况。如果是硬编码,您可能会有类似的课程:

public static class Constants
{
    public static Dictionary<int, string> ActionStatuses = new Dictionary<int, string>(){
            { 1, "Active" },
            { 0, "Inactive"},
            //etc. Additional statuses go here. No comma on the final entry...
    };
}

2)向您的视图模型添加一个新属性,以解码此状态的显示文本。您可以使用属性等进行装饰。您可以正常的VM属性,因此您可以继续使用 @html.displayfor等,

    public class MyViewModel
    {
            // Other properties etc...
            public string ActionStatusDisplayText { get { return Constants.ActionStatuses[this.ACTION_STATUS]}; }
    }

3)在您的视图中使用此新属性。

<td>@Html.DisplayFor(model => model.ActionStatusDisplayText)</td>

4)如果您必须在多个不同的视图模型中进行此查找,则可能需要考虑将查找代码移动到常量类中,以便可以与多个位置共享相同的代码。尤其是,如果您需要实施hte案例,因为tatus可能由于某种原因可能不在字典中(someeraish等的值= -99)

最新更新