如果控制器和视图之间的值不相互匹配,建议的方法是什么?
// Basic model with enum property
public class MyModel {
public State MyState { get; set; }
}
// Enum denoting 3 states
public enum State {
Ready,
Set,
Go
}
// API/MVC/Module/SignalR controller
public class MyController : MiddlewareController {
public MyController() {
Get = _ => {
return View["myView", new MyModel()];
};
}
}
// myView
<div class="@Model.State"></div>
现在,枚举值的字符串表示形式为“Ready”,“Set”和“Go”,但在我看来,我需要“.red”,“。yellow”,“。green”。
当然,在我的控制器中,我可以创建一个返回相应CSS值的函数,但这感觉错了,因为我将视图关注泄漏到我的控制器中。有没有类似价值转换器的东西?
答案 0 :(得分:1)
如果您不能像我建议的那样使用css,我认为键值字典是要走的路。特别是这是一个网站问题。
public static Dictionary<State, string> StatusClassName = new Dictionary<State, string>();
StatusClassName.Add(State.Ready, "red");
...
之后,您可以按照您想要的方式使用;
StatusClassName[Model.State]
或者你可以编写一个扩展方法来使用
Model.State.GetClassName();
答案 1 :(得分:0)
您可以在视图中对其进行转换:
@{
string className = string.Empty;
switch (Model.State)
{
case State.Ready:className = "red"; break;
case State.Set:className = "green"; break;
case State.Go: className = "yellow"; break;
}
}
<div class="@className"></div>