Asp.net mvc 3 如何将部分站点渲染到另一个div?
我希望在站点上有一个带有表的视图,当您单击表项时,我希望用我刚才单击的当前对象更新部分视图。我如何做到这一点Asp.net mvc 3 如何将部分站点渲染到另一个div?,asp.net-mvc-3,razor,Asp.net Mvc 3,Razor,我希望在站点上有一个带有表的视图,当您单击表项时,我希望用我刚才单击的当前对象更新部分视图。我如何做到这一点 <table> @foreach (var a in annotations) { <tr> <td> <label onclick="change stuff to new Annotation">@a.Title</label>
<table>
@foreach (var a in annotations)
{
<tr>
<td>
<label onclick="change stuff to new Annotation">@a.Title</label>
</td>
</tr>
}
</table>
<div id="stuff">@Html.RenderPartial("Go", "new annotation")"</div>
@foreach(注释中的var a)
{
@a、 头衔
}
@RenderPartial(“Go”,“new annotation”)“
您的客户端和服务器端代码在这里混淆了
@Html.RenderPartial("Go", a)
是一个返回一些HTML的服务器端方法
<label onclick=
您正在混合客户端代码和服务器端代码。当单击事件发生时,您已进入客户端,服务器端代码已运行并完成
您可以在隐藏的div
中渲染局部视图,然后在单击事件中将其取消隐藏。可能与此类似:
<table>
@foreach (var a in annotations)
{
<tr>
<td>
<label>@a.Title</label>
<div style="display:none;">@Html.RenderPartial("Go", a)</div>
</td>
</tr>
}
</table>
<script type="text/javascript">
$(function () {
$('table tr td label').click(function () {
$(this).closest('td').find('div').show();
});
});
</script>
这会将一个单击事件绑定到DOM,而不是多个。另外,动态添加的行在绑定发生后仍会处理该事件。我刚刚将示例更改为一个较新的示例。这可能可行,但我不想在创建表时一直执行@Html.RenderPartial,可能是太大了,它会消耗我的性能。有什么方法可以在我点击它的时候运行它吗?@Tartori:啊,我看到你最近改变了这个问题。这确实改变了一点,是的。稍微挖掘一下这里找到了一个很好的解决方案:它基本上使用AJAX来获取部分视图,然后将其呈现到页面上。在任何情况下,你都要必须确保服务器端和客户端代码保持干净的分离。好的,谢谢,是的,我添加了新的示例,看到我使用了一些我刚刚尝试过的东西。。。
<table>
@foreach (var a in annotations)
{
<tr>
<td>
<label>@a.Title</label>
<div style="display:none;">@Html.RenderPartial("Go", a)</div>
</td>
</tr>
}
</table>
<script type="text/javascript">
$(function () {
$('table tr td label').click(function () {
$(this).closest('td').find('div').show();
});
});
</script>
<script type="text/javascript">
$(function () {
$('body').on('click', 'table tr td label', function () {
$(this).closest('td').find('div').show();
});
});
</script>