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>