我刚刚解决了一个我遇到的问题(据我所知)无法使用 ActionLink 解决,所以我使用了常规超链接。
当这两个链接呈现在页面上时,它们的样式彼此非常相似,因为它们传递相同的 css 条件,但是我注意到它们在两种方式上并不完全相同:
- 文本在超链接上是可选的,而在 ActionLink 上是可选的
- 将鼠标悬停在 ActionLink 上时,光标会变成一只手而不是指针,超链接会留在指针上。
我的印象是 ActionLink 呈现一个超链接,这可以解释为什么它们都由 css 设置样式,但显然存在一些差异。
有谁知道如何解决此问题,或建议使用超链接替换 ActionLink 以调用 AJAX 函数(返回 PartialView)的另一种解决方案?
更新
这是呈现的 HTML。第一个是超链接,第二个是 ActionLink。
<li><a id="load-partial">Test</a></li>
<li><a href="/Contact/List">Contact</a></li>
我在超链接中有一个 id 的原因是它会运行以下脚本以在特定的 div
中创建 View 。我似乎无法使用 ActionLink 复制它,因为它只是在没有布局 View 且完全未格式化的情况下自行返回 View 。
<script>
$(document).ready(function () {
$('#load-partial').click(function () {
$.ajax({
url: '/Contact/List/',
datatype: 'html',
success: function (data) {
$('#adminmain').empty().html(data);
}
});
});
});
</script>
非常感谢。
最佳答案
ActionLink 只不过是一个发出 HTML A 标记的服务器端辅助方法。没有其他特别之处。
如果您看到行为/呈现方面的差异,请查看呈现的 HTML 源代码并在其中查找差异。
使用 ActionLink 需要您手动编写 A 标记,很少有您无法完成的事情。您是否针对使用它无法解决的问题发布了单独的问题?
更新(基于您发布的 HTML)
超链接缺少一个 href,所以点击时它不会执行任何操作。
如果你需要给你的 ActionLink 添加一个 ID,你可以这样做:
@Html.ActionLink("Contact (this is the text)", "List", "Contact",
new { someQueryStringParameter = 42 },
new { id="load-partial" })
那个例子展示了如何生成
<a id="load-partial" href="/Contact/List?someQueryStringParameter=42">Contact (this is the text)</a>
请记住,ID 在给定的 HTML 页面上应该是唯一的。
关于html - 关于 ActionLinks 和普通 a-tag 超链接的小 MVC 样式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11908256/