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>