如何从HTML访问在C#中创建的对象的值?

时间:2016-01-20 15:49:23

标签: c# html asp.net-mvc object viewbag

在我的MVC控制器中,我创建了一个“对象”,我将其简化为“学生”。我正在使用ViewBag将其传递给我的视图。

在我的控制器中,我有:

ViewBag.Student = new { 
    Id = "52", 
    Value = JsonConvert.SerializeObject(new
    {
         StudentName = oneStudent.Name,
         Age = oneStudent.Age,
         FavoriteColor = oneStudent.Color,
         Height = oneStudent.Height
    }),
    Text = oneStudent.Name + " --- " + oneStudent.Age,

};

我开始使用

调用ViewBag
@{
    var student = ViewBag.Student;
}

我希望使用span(或类似的东西)来显示数据。我的尝试是在html代码中使用了一些代码“@ Student.Value”,但这没有用。

非常感谢任何帮助。谢谢。

1 个答案:

答案 0 :(得分:2)

您正在为Viewbag设置匿名对象。您无法在剃须刀视图中阅读该属性。

您应该做的是创建一个视图模型来表示您要发送的数据,创建该对象,初始化属性值并发送到视图。使用ViewBag在您的操作方法和视图之间传输数据也不是一个好主意。由于我们将使用视图模型,因此我们可以将视图强烈地键入视图模型并使用它来传输数据。

change

在你的GET行动中

$('.slider').each(function() {
  var $el = $(this);
  $el.slider({
    range: "max",
    min: $el.data('min'),
    max: $el.data('max'),
    value: $el.data('value'),
    step: $el.data('step'),
    stop: function(event, ui) {
      var percent = (100 / ($(this).data('max') - $(this).data('min'))) * $(this).slider('value');
      $('.slider').not(this).each(function() {
        $(this).slider('value', (($(this).data('max') - $(this).data('min')) / 100) * percent);
      });
    },
    change: function(event, ui) {
      $($el.data('target')).html('£' + ui.value);
    }
  });
});

并在您的视图中强烈输入我们的视图模型

public class StudentDetailVm
{
    public int Id { set; get; }
    public StudentVm Value { set; get; }   
}
public class StudentVm
{
    public string StudentName { set; get; }
    public int Age { set; get; }
    public int Height {set;get;}
}