gpt4 book ai didi

c# - 在 MVC View 和 Controller 中使用 if 语句

转载 作者:行者123 更新时间:2023-11-30 15:55:49 26 4
gpt4 key购买 nike

我在根据从 Controller 获得的结果显示不同文本时遇到问题。

command_status_code 列从表中返回 012 之间的值。但是,我想根据从 Controller 获得的值显示不同的文本。

即,如果我得到 0,我想显示 Verify,如果我得到 1,我想显示 Active 等等。

我不确定是在 View 中添加检查还是在 Controller 本身中进行转换。

相关代码如下:

查看

@model List<Models.AuditLogs>

<table>
<tr>
<th>User</th>
<th>Command Status Code</th>
</tr>
@foreach (var AuditLogsDetail in Model)
{
<tr>
<td>@AuditLogsDetail.user_id</td>
<td>@AuditLogsDetail.command_status_code</td>
</tr>
}
</table>

Controller

public ActionResult AuditLogs() {
string connectionstring = "MY_CONNECTION_STRING";
string sql = "select * from table_name";
SqlConnection conn = new SqlConnection(connectionstring);
SqlCommand cmd = new SqlCommand(sql, conn);
var Details = new List < AuditLogs > (); {
conn.Open();
SqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read()) {
var AuditLogsDetail = new AuditLogs {
user_id = rdr["user_id"].ToString(),
command_status_code = rdr["command_status_code"].ToString(),
};
Details.Add(AuditLogsDetail);
}
}
return View(Details);
}

模型

public class AuditLogs
{
public string user_id { get; set; }
public string command_status_code { get; set; }
}
}

最佳答案

我会将 Controller 留给路由或控制调用哪个 View (这应该是它的工作,您应该在 Controller 中放置尽可能少的表示或应用程序逻辑)。

由于这个转换是与模型本身相关的逻辑,所以我会把它放在它所属的Model类中,并且可以很容易地测试(如果它变得更复杂)。

我将在 AuditLogsDetail 模型类中添加一个新属性,该属性将使用 switch 语句返回一个字符串(因为有许多可能的值):

public class AuditLogsDetail 
{
public int CommandStatusCode { get; set; }

public string CommandStatus
{
get
{
switch (CommandStatusCode)
{
case 0:
return "Verify";

case 1:
return "Active";

// and so on for the other 12 cases

default:
// you could throw an exception here or return a specific string like "unknown"
throw new Exception("Invalid Command Status Code");
}
}
}
}

在 Razor View 中,您只需同样调用此属性即可:

<tr>
<td>@AuditLogsDetail.user_id</td>
<td>@AuditLogsDetail.CommandStatus</td>
</tr>

您可以在 View 中放置一个switch 语句或if 语句,但这样会使它变得困惑。如果您有多个这样的语句, View 将难以阅读。

关于c# - 在 MVC View 和 Controller 中使用 if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47927913/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com