簡體   English   中英

如何在ASP.NET MVC ActionLink中將C#變量分配給CSS類變量

[英]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 = "DynamicClassName" ,類似於@class = @myChangingColorClass

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

您需要在myChangingColorClass的代碼塊中聲明myChangingColorClass ,如下所示

@{
    string myChangingColorClass = "myClass";
}

您可以嘗試在ModelViewModel類中放入一個字符串變量(屬性),然后從代碼隱藏中進行設置,並在視圖中使用它,如下所示:

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

這可以通過兩種方式完成:一種是通過在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"]) })

請讓我知道,這對您有用嗎?

@{
    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將解決此問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM