从控制器访问常量字符串以查看的更好方法

时间:2018-09-19 04:13:40

标签: c# asp.net-mvc html5 razor model-view-controller

我在控制器顶部定义了一个常量字符串,如下所示。我想以查看条件中的一种来访问该字符串,以查看该值是否与字符串值匹配。我本来想在条件下用硬编码cshtml中的值,但好奇是否有更好的方法呢? (我知道ViewBag / ViewData / TempData),但是当我在控制器顶部写入其中任何一个时,都无法识别它。我也不知道该怎么写。还是其他更好的方法?请帮忙。我们确实在某些cshtml中使用Viewbag,但是这些数据是在视图中编写的,并在另一个视图中进行访问。

控制器

private const string FundType = "Super"

剃刀cshtml页面

@if (Model.IsMember && Model.New && Model.Type.Fund != "Super")

2 个答案:

答案 0 :(得分:1)

您可以将其提取到一个单独的类中,以便在其中存储此字符串常量值。

public class FundType
{
    public const string Super = "Super";
    public const string NonSuper = "NonSuper";
}

现在您可以在剃刀视图中使用它

@if (Model.IsMember && Model.New && Model?.Type?.Fund != FundType.Super)
{
   <p>Inside If </p>
}

或在控制器代码中

var vm = new YourViewModel();
vm.Type.Fund = FundType.Super;  // Assuming Type is not null

如果要在其他名称空间中定义类,请确保在使用此类时使用所需的using YourNamespace

答案 1 :(得分:0)

您可以将字符串作为模型传递给视图,如下所示:

private const string FundType = "Super"
public ActionResult Index()
{
    return View((object)FundType);
}

此处,(对象)位很重要,因此MVC不会尝试将常量加载为Viewname。在您看来,您可以像下面这样访问它:

@model constString
<span>Fund is: @Model</span> <!-- Output is Super -->