你好, 我有菜单栏,当我在Ajax中单击“关于布局中的更改”时,单击body:
<div id="renderbody">@RenderBody()</div>
菜单栏:
<li class="active menu-tab"><a href="#" id="Dashboard"><i class="icon icon-home"></i> <span>Dashboard</span></a> </li>
<li class="menu-tab"> <a href="#" id="About"><i class="icon icon-signal"></i> <span>About</span></a> </li>
和JS:
$("#About").click(function () {
$.ajax({
url: '/Home/About',
success: function (data) {
$("#renderbody").html(data);
}
})
})
这是完美的作品,但是当我使用部分视图进行建模时,它却不起作用。
<li class="menu-tab"> <a href="#" onclick="@Html.Partial("_MovesPages", new IndividualMenuButton { ID="About", url="About"})"><i class="icon icon-signal"></i> <span>About</span></a> </li>
模式-个人菜单按钮:
namespace XXX.Models
{
public class IndividualMenuButton
{
public string ID { get; set; }
public string Url { get; set; }
}
}
和部分视图-_MovesPages:
@model XXX.Models.IndividualMenuButton
@section scripts
{
<script>
$("#@Model.ID").click(function () {
$.ajax({
url: '/Home/@Model.Url',
success: function (data) {
$("#renderbody").html(data);
}
})
})
</script>
}
答案 0 :(得分:1)
这不会呈现有效的事件处理程序。呈现的HTML看起来像
<li class="menu-tab"> <a href="#" onclick="<script>...</script>"><i class="icon icon-signal"></i> <span>About</span></a> </li>
onclick属性需要包含javascript代码,而不是HTML脚本块。也许更好的解决方案是将类用作选择器而不是部分选择器,并使用href属性保存URL。因此,类似:
<li class="menu-tab"> <a href="About"><i class="icon icon-signal"></i> <span>About</span></a> </li>
<script>
$(".menu-tab").click(function (e) {
e.preventDefault();
var url = '/Home/' + $(this).attr('href');
$.ajax({
url: url,
success: function (data) {
$("#renderbody").html(data);
}
});
});
</script>
请注意,您需要传递事件args(e
)并调用e.preventDefault();
以防止锚标记像通常那样执行导航,以便您可以进行ajax调用。 / p>