C# 在asp.net mvc3中将css类从控制器传递到局部视图
我有一个来自控制器的简单代码C# 在asp.net mvc3中将css类从控制器传递到局部视图,c#,asp.net,asp.net-mvc-3,C#,Asp.net,Asp.net Mvc 3,我有一个来自控制器的简单代码 public ActionResult CreatePage() { return PartialView( "APage" ); } 该页面的APage部分是: <table class="@className"> <tr> ... </tr> </table> 如何将控制器函数(如果我声明:public ActionResult CreatePage(string cssClass){…})
public ActionResult CreatePage() {
return PartialView( "APage" );
}
该页面的APage
部分是:
<table class="@className">
<tr>
...
</tr>
</table>
如何将控制器函数(如果我声明:public ActionResult CreatePage(string cssClass){…}
)的参数传递给PartialView
函数
意味着
我想要:
public ActionResult CreatePage( string cssClass ) {
return PartialView( "APage", cssClass );
}
我想在APage
视图中使用css类
例如:
$.post('CreatePage',{cssClass:'aClass',函数(数据){
$('.result').html(数据);
});
public ActionResult CreatePage( string cssClass ) {
return PartialView( "APage", cssClass ); //cssClass = 'aClass'
}
...
谢谢我不确定我是否理解正确,但我认为你的例子已经走上了正确的轨道 在局部视图中,在最顶部添加以下内容:
@model string
然后在局部视图中,将表标记定义更改为
<table class="@Model"> <tr> ... </tr> </table>
。。。
扩展@rikitikitik所说的内容
您已经发现了方法重载,现在您只需扩展当前的模型
,以包含CSS类字符串。只需添加一个名为CssClass
的属性,就可以在局部视图中使用它
当然,这假设您使用的是(因此也是),而不是“仅仅”模型,甚至是数据库模型(例如,由实体框架处理)
公共类APartialModel
{
公共字符串名称{get;set;}
//……其他财产
公共字符串CssClass{get;set;}
}
public ActionResult CreatePage(字符串cssClass){
//在此处初始化局部视图的整个视图模型
//这通常意味着您需要传入一个id并使用它来
//进行数据库查找。
//如果是“工作太多”,那可能是指你
//需要解决一个结构性问题。
APartialModel=新的APartialModel
{
Name=“不知怎的,我已经知道这个值了”,
CssClass=CssClass
};
返回部分视图(“APage”,模型);
}
@model APartialModel
…例如@Model.Name
为什么不在客户端用javascript更改类名?为什么要更改类名?如果很少的话,你认为你有多少个css类,你可以在视图中放一个简单的逻辑。我的意思是你使用Spark还是Razor?我没有Spark,只有ASP和Razor…我知道,但我已经有了一个不同于stri的其他类型的模型ng
然后修改模型以包含cssClass。如果此时不存在,则创建一个ViewModel
。然后从控制器操作构造ViewModel,然后将ViewModel传递给局部视图。在局部视图中,将@model声明更改为ViewModel的类型。
<table class="@Model"> <tr> ... </tr> </table>