0

我有一个来自控制器的简单代码

public ActionResult CreatePage() {

   return PartialView( "APage" );
}

该页面的部分APage是:

<table class="@className">
  <tr>
  ...
  </tr>
</table>

在javascript中,我想APage用不同的类名(css类名)生成

$.post('CreatePage', function(data) {
  $('.result').html(data);
});

如何将控制器函数(如果我要声明:)传递public ActionResult CreatePage(string cssClass) { ... }给函数的参数PartialView

方法

我想喜欢:

public ActionResult CreatePage( string cssClass ) {

       return PartialView( "APage", cssClass );
    }

我想使用那个 css 类APage

例如:

  1. 如果我打电话

    $.post('CreatePage', {cssClass: 'aClass' ,function(data) { $('.result').html(data); });

  2. 然后它会调用

    public ActionResult CreatePage( string cssClass ) {
    
       return PartialView( "APage", cssClass ); //cssClass = 'aClass'
    }
    
  3. 并返回视图

    <table class="aClass"> <tr> ... </tr> </table>

谢谢

4

2 回答 2

0

我不确定我是否正确理解了你,但我认为你的例子已经在正确的轨道上。

在您的局部视图中,将其添加到最顶部:

@model string

然后在您的局部视图中,将表格标记定义更改为

<table class="@Model"> <tr> ... </tr> </table>
于 2012-07-06T06:53:06.460 回答
0

扩展@rikitikitik 所说的内容。

您已经发现了PartialView(viewName, model)方法重载,现在您只需扩展您的 currentmodel以包含 CSS 类字符串。只需添加一个名为的属性CssClass,您就可以在局部视图中使用它。

这当然假设您使用的是视图模型(以及因此MVVM 模式),而不是“只是”模型甚至数据库模型(例如由实体框架处理)。

public class APartialModel
{
    public string Name { get; set; }
    // ... other properties
    public string CssClass { get; set; }
}
public ActionResult CreatePage( string cssClass ) {

   // Initialize the entire view model for the partial view here
   // This usually means you need to pass in an id and use it to
   // make a database lookup.
   // If it's "too much work", it probably means you
   // need to fix a structural problem.
   APartialModel model = new APartialModel
       {
           Name = "Somehow I already know this value",
           CssClass = cssClass
       };

   return PartialView( "APage", model );
}
@model APartialModel

<table class="@Model.CssClass">
  <tr>
  ... for example @Model.Name
  </tr>
</table>
于 2012-07-08T14:26:04.953 回答