从asp.net mvc中的javascript访问嵌套模型

时间:2017-04-26 13:19:37

标签: javascript asp.net-mvc

我的班级和视图模型,

public class MyClass {
[Key] public int Id {get;set;}
public name {get;set;} ....etc.
} 

public class MajorViewModel {
[key] public string id{get;set;}
public List<MyClass> myClass {get;set;}
...etc;
}

在控制器中

public ActionResult viewDetail() {
 MajorVeiwModel mv = new MajorViewModel()
 ...
 ..
  return View(mv);
}

儿童部分视图

@model namespace.MyClass
<div> @html.DisplayNameFor(model=>model.id) 
<div> @html.DisplayFor(model=>model.id) 
  ....and tens of other properties..

在视图中,我有

@model namespace.MajorViewModel 
<div> @html.DisplayNameFor(model=>model.id) 
      @html.DisplayFor(model=>model.id) </div>
@for(var I=0; I< Model.myClass.count(); i++)
{
 <div>@Html.DisplayFor(model => model.myClass[i].id)
 <a href="#" id="displayId" data-bind: @Model.myClass[i])  <==not sure how to pass data
}

<script>
  $("#displayId").click(function(){
      alert(this.name);     <== how to access MyClass[i].name for respective row for which it was clicked.
  var resultDiv = $('<div id="childView"></div>');
  var htmlContext = $(this).parent();
  //somehow get the model selected and create html for child
  var result = ???   <== fill it with child partial view html
  //TODO ...FILL THE result
  resultDiv.html(result);
  alert(resultDiv);
});
</script>

在上面的代码中,我试图绑定/链接每一行的数据但不确定如何绑定,这样在链接点击时,在JavaScript中我可以访问所有数据(MyClass [i]等数十个属性)。用户点击并显示的第i个实例的名称等)。  我是否需要序列化数据,但如何为每行链接?没有桌子。使用@ Html.HiddenFor。

1 个答案:

答案 0 :(得分:0)

而不是&#34; for&#34;声明使用&#34; foreach&#34;声明。

 @foreach(var item in Model.myClass)
{
<div>@Html.DisplayFor(m => item.id)
 <a href="#" id="displayId" data-name="item.name" class="clickfunction" )>item.Name </a>
}

<script>
  $(".clickfunction").on('click',function(e){
    e.preventDefault();
    var name = $(this).data("name")
      alert(name);     
});
</script>