如何在ASP.NET MVC ActionLink中将C#变量分配给CSS类变量

时间:2015-06-08 05:24:51

标签: c# css asp.net-mvc razor dynamic-css

在下面的ActionLink代码中,如何在ASP.NET MVC 5的视图中将C#字符串变量分配给@class

@Html.ActionLink("Manage List", "Index", new { @class = "DynamicClassName" });

我想用动态的东西替换静态字符串@class = "DynamicClassName",类似于@class = @myChangingColorClass

// Error 
// yes, myChangingColorClass is declared C# valid string 
@Html.ActionLink("Manage List", "Index", new { @class =  @myChangingColorClass });

4 个答案:

答案 0 :(得分:3)

您需要在cshtml的代码块中声明myChangingColorClass,如下所示

@{
    string myChangingColorClass = "myClass";
}

答案 1 :(得分:2)

您可以尝试在模型 ViewModel 类中添加字符串变量(属性),然后从代码隐藏中设置它并在您的视图中使用它,就像这样:

@Html.ActionLink("Manage List", "Index", new { @class =  @Model.myChangingColorClass});

答案 2 :(得分:2)

这可以通过两种方式来实现,一种方法是在ViewModel类中设置值,或者在ViewBag,ViewData或TempData中设置值。

方式1)强烈输入的优先方式:将css类名设置为viewmodel类属性:

Class Student
{
  public ID BIGINT {get; set;}
  ... //other properties

}

Class StudentViewModel : Student
{
   public CssClass string {get; set;}
}

//控制器动作

public ActionResult Index(){
  StudentViewModel objModel; 
  //initialize model

  objModel.CssClass = "myCssClass"; //set css class name to viewmodel 
  return View(objModel);
}

//在视图中使用如下代码:

@model namespace.StudentViewModel;
@Html.ActionLink("Manage List", "Index", new { @class =  Model.CssClass })

方式2)将css类名设置为viewbag / viewdata / tempdate。但这不是首选。

//控制器动作

public ActionResult Index(){

  ViewBag.CssClass = "myCssClass"; //set css class name to ViewBag
  //or
  ViewData["CssClass"] = "myCssClass"; //set css class name to ViewData
  //or
  TempData["CssClass"] = "myCssClass"; //set css class name to TempData

  return View();
}

//在视图中使用如下代码:

@Html.ActionLink("Manage List", "Index", new { @class =  @ViewBag.CssClass })
//Or
@Html.ActionLink("Manage List", "Index", new { @class =  @Convert.toString(ViewData["CssClass"]) })
//Or
@Html.ActionLink("Manage List", "Index", new { @class =  @Convert.toString(TempData["CssClass"]) })

请告诉我,这对你有用吗?

答案 3 :(得分:0)

@{
    string myChangingColorClass = "myClass";
}

@Html.ActionLink("Manage List", "Index", null, new { @class = @myChangingColorClass });

它会生成

<a class="myClass" href="/ControllerName">Manage List</a>

但是使用它,

@Html.ActionLink("Manage List", "Index", new { @class = @myChangingColorClass });

它会生成

<a href="/ControllerName?class=myClass">Manage List</a>

它假设它像那个方法的参数..你不想要..

null解决此问题之前添加new { @class = @myChangingColorClass }