如何将 C# 变量分配给 CSS class 变量 ASP.NET MVC ActionLink
How to assign C# variable to CSS class variable in ASP.NET MVC ActionLink
在下面的 ActionLink 代码中,如何在 ASP.NET MVC 5 的视图中将 C# 字符串变量分配给 @class
?
@Html.ActionLink("Manage List", "Index", new { @class = "DynamicClassName" });
我想用类似于 @class = @myChangingColorClass
的动态内容替换静态字符串 @class = "DynamicClassName"
// Error
// yes, myChangingColorClass is declared C# valid string
@Html.ActionLink("Manage List", "Index", new { @class = @myChangingColorClass });
您可以尝试在 Model 或 ViewModel class 中放置一个字符串变量 (属性) 并且然后只需从代码隐藏中设置它,然后像这样在您的视图中使用它:
@Html.ActionLink("Manage List", "Index", new { @class = @Model.myChangingColorClass});
您需要在 cshtml 的代码块中声明 myChangingColorClass
,如下所示
@{
string myChangingColorClass = "myClass";
}
这可以通过两种方式实现,一种是在 ViewModel class 中设置值,或者在 ViewBag、ViewData 或 TempData 中设置值。
方式 1) 强类型首选方式:将 css class 名称设置为视图模型 class 属性:
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 class 名称设置为 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"]) })
请告诉我,这对你有用吗?
@{
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>
它假设它就像那个方法的参数..你不想要的..
在new { @class = @myChangingColorClass }
前加上null
就可以解决这个问题
在下面的 ActionLink 代码中,如何在 ASP.NET MVC 5 的视图中将 C# 字符串变量分配给 @class
?
@Html.ActionLink("Manage List", "Index", new { @class = "DynamicClassName" });
我想用类似于 @class = @myChangingColorClass
@class = "DynamicClassName"
// Error
// yes, myChangingColorClass is declared C# valid string
@Html.ActionLink("Manage List", "Index", new { @class = @myChangingColorClass });
您可以尝试在 Model 或 ViewModel class 中放置一个字符串变量 (属性) 并且然后只需从代码隐藏中设置它,然后像这样在您的视图中使用它:
@Html.ActionLink("Manage List", "Index", new { @class = @Model.myChangingColorClass});
您需要在 cshtml 的代码块中声明 myChangingColorClass
,如下所示
@{
string myChangingColorClass = "myClass";
}
这可以通过两种方式实现,一种是在 ViewModel class 中设置值,或者在 ViewBag、ViewData 或 TempData 中设置值。
方式 1) 强类型首选方式:将 css class 名称设置为视图模型 class 属性:
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 class 名称设置为 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"]) })
请告诉我,这对你有用吗?
@{
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>
它假设它就像那个方法的参数..你不想要的..
在new { @class = @myChangingColorClass }
前加上null
就可以解决这个问题