刚进入mvc世界并在渲染时遇到一些奇怪的问题 使用jquery进行部分视图。
我正在使用mvc3,这是我到目前为止所做的:
锚标记:
@Html.ActionLink("Click-Me", null, null, null, new { onclick = "javascript:FillData();",id=2 })
div tag:
<div id="FillRecords"></div>
功能:
<script>
function FillData() {
var val1 = $(this).attr('id');
$.ajax({
url: "/Dummy/Edit",
datatype: "html",
type:"Post",
data:{id:val1.toString()},
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
success: function (mydata) {
$("#FillRecords").empty().append(mydata);
},
error: function (errorStatus,errorType,error) {
alert(error);
}
});
}
</script>
我只想点击时在“DummyController”中渲染“编辑”局部视图 锚标签。此外,如果我使用简单的锚标签而不是html.actionlink 这个工人很好。
有人知道如何使用actionlink吗? 当然,我错过了一些愚蠢的事情,或者这是否可能?
请不要建议我使用Ajax.Actionlink因为 这也很好,但我想知道为什么它失败了html.actionlink。
答案 0 :(得分:0)
Html.ActionLink只不过是一个实用程序类,用于检查应用程序中配置的路由,并打印一个链接标记,其URL与该特定操作/ controller / params对应。
简单来说:它背后没有魔法,你也可以写
<a href="@Url.Action(...)">Text</a>
或直接写
<a href="/Controller/Action/id">Text</a>
使用Url.Action或Html.ActionLink的主要优点是,如果您更改应用中的路线,则无需担心网页中的链接。
这意味着,对于你想要的,使用Html.ActionLink是没有意义的,你应该写一下
<a href="#" id="clickme">Click-Me</a>
并在链接中添加jQuery事件。如果使用最新版本的jQuery:
$(document).on('click', '#clickme', function() {
$.ajax(...);
});
关于MVC.Net的好处是你直接使用HTML / JS / CSS。从字面上看,辅助方法可以帮助您。但最后,他们只是编写HTML,他们背后没有任何其他内容,并且建议使用它们,但不是必需的。
答案 1 :(得分:0)
在这里和那里稍微调整一下,我得到了我的解决方案。渲染我的局部视图 使用html.action,我只需将锚标记的URL更改为“#”,因为使用firebug我可以看到它有效。因此,对于使用Html.actionlink呈现部分视图问题的任何人,只需将url更改为生成的锚标记的“#”。
这就是我所做的:
锚标记:
<a href="@Url.Action("Edit","Dummy")" id="clickme">ClickMe</a>
div tag:
<div id="filldata"></div>
功能:
<script>
$("#clickme").click(function () {
$(this).attr("href", "#");
$.ajax({
url: "/Dummy/Edit",
success: function (mydata) {
$("#filldata").empty().append(mydata);
},
error: function (error) {
alert(error);
}
});
});
</script>
Althogh我解决了渲染局部视图的问题,但仍然想知道为什么要更改网址 “#”有效(可能它不再有网址导航到....)