Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
asp.net mvc中从javascript访问嵌套模型_Javascript_Asp.net Mvc - Fatal编程技术网

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

asp.net mvc中从javascript访问嵌套模型,javascript,asp.net-mvc,Javascript,Asp.net Mvc,我的类和视图模型 public class MyClass { [Key] public int Id {get;set;} public name {get;set;} ....etc. } 及 子部分视图 @model namespace.MyClass <div> @html.DisplayNameFor(model=>model.id) <div> @html.DisplayFor(model=>model.id) ....and tens

我的类和视图模型

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

子部分视图

@model namespace.MyClass
<div> @html.DisplayNameFor(model=>model.id) 
<div> @html.DisplayFor(model=>model.id) 
  ....and tens of other properties..
@model namespace.MyClass
@DisplayNameFor(model=>model.id)
@DisplayFor(model=>model.id)
..和数十处其他财产。。
鉴于此,我有

@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>
@model namespace.MajorViewModel
@DisplayNameFor(model=>model.id)
@DisplayFor(model=>model.id)
@对于(var I=0;Imodel.myClass[i].id)
使用“foreach”语句代替“for”语句

 @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>
@foreach(Model.myClass中的变量项)
{
@DisplayFor(m=>item.id)
}
$(“.clickfunction”)。在('click',函数(e){
e、 预防默认值();
变量名称=$(this).data(“名称”)
警报(名称);
});

将属性值添加为
数据-
属性-例如
@Stephen,我想传递类型为@model.myClass[I]的myClass的整个模型,以便它在弹出的对话框窗口中使用为myClass创建的视图进行强类型化。请注意,我评论说有“数十个属性,如myClass[I].name等)”。您需要添加每个属性-无法将“模型”添加到
数据-
属性。另一种方法是使用相对选择器获取与
DisplayFor()关联的文本。
methods@StephenMuecke,谢谢,您离我的主查询有点近。“使用相对选择器获取与您的查询关联的文本”这就是如何从一个视图向另一个视图传递变量并将变量转换为模型,该视图需要@model namespace.MyClass类型的模型。由于MajorViewModel视图包含子模型数据,是否需要服务器往返才能在单独的视图中显示MyClass数据?如何完成此子视图的显示。不清楚显示什么您希望在脚本中执行此操作。您是否有一个模式弹出表单,希望用“行”中的值填充该表单?但您的最后一条注释似乎表明您希望重定向到另一个视图,在这种情况下,只需使用
@Html.ActionLink()
并仅传递
id
属性,然后在控制器方法中获取数据模型。
@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>
 @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>