Asp.net mvc ActionLink多次重复相同的GET请求

Asp.net mvc ActionLink多次重复相同的GET请求,asp.net-mvc,asp.net-mvc-3,asp.net-ajax,Asp.net Mvc,Asp.net Mvc 3,Asp.net Ajax,我正在学习MVC,目前正在制作一个简单的跟踪系统 我遇到的问题是,当单击Ajax.ActionLink时,我会对页面上显示的每个scrum卡运行一次相同的Ajax操作 如您所见,我显示了9张卡,收到了9个相同的get请求。(动作链接实际上是卡右下角的彩色滚轮图像) SingleCard.cshtml(视图)-“ColorPicker”是我的操作的名称 <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")

我正在学习MVC,目前正在制作一个简单的跟踪系统

我遇到的问题是,当单击Ajax.ActionLink时,我会对页面上显示的每个scrum卡运行一次相同的Ajax操作

如您所见,我显示了9张卡,收到了9个相同的get请求。(动作链接实际上是卡右下角的彩色滚轮图像)

SingleCard.cshtml(视图)-“ColorPicker”是我的操作的名称

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>

...

<div class="card_footer" id="card_footer_id_@(Model.ID)">
    <div class="card_tags">
        [Tag1] [Tag2] [Tag3]
    </div>
    <div class="card_colorwheel_icon">
    @Ajax.ImageActionLink("../Content/Images/color_wheel.png", "Color Wheel", "ColorPicker", new { cardid = Model.ID }, new AjaxOptions { UpdateTargetId = "ColorPickerDisplay" })
    </div>
</div>

检查页面的HTML。在singlecard.cshtml中有一行:

    <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>

对于每一张卡片,您都会包含javascript,因此它会被包含9次。因此,将向服务器发送9个请求


解决方案:将脚本include放在页面级别,而不是卡片级别。

您尚未显示此
ImageActionLink
自定义帮助程序。你说它像一个普通的
ActionLink
一样工作,但是我们在看到它的代码之前无法知道这一点。检查上面的编辑:)谢谢!谢谢:)有人告诉我需要包含该文件才能工作,但不清楚是在哪个级别。这很有道理。虽然我最终摆脱了所有操作链接,而是使用$.ajax处理业务谢谢,HTM调查也解决了我的问题:)
public static class ImageActionLinkHelper
{
    public static MvcHtmlString ImageActionLink(
        this AjaxHelper helper,
        string imageUrl,
        string altText,
        string actionName,
        object routeValues,
        AjaxOptions ajaxOptions)
        {
            var builder = new TagBuilder("img");
            builder.MergeAttribute("src", imageUrl);
            builder.MergeAttribute("alt", altText);
            builder.MergeAttribute("title", altText);
            var link = helper.ActionLink("[replaceme]", actionName, routeValues, ajaxOptions);
            var html = link.ToHtmlString().Replace("[replaceme]", builder.ToString(TagRenderMode.SelfClosing));
            return new MvcHtmlString(html);
        }
}
    <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>