jquery - MVC 帮助链接 Url.Action 不再解析

标签 jquery asp.net-mvc asp.net-mvc-4

在我的一个 View 中,我有一个帮助链接,它显示一个 jquery ui 对话框,描述该字段的用途。

我的看法:

@using (Html.BeginForm("OptionalFields", "Home"))
{
    @Html.HiddenFor(m => m.ConfigID)
    @Html.LabelFor(m => m.CampaignName)
    @Html.TextBoxFor(m => m.CampaignName) <a href="#" class="helplinkcampaign">help</a>
    @Html.LabelFor(m => m.LeadStatus)
    @Html.TextBoxFor(m => m.LeadStatus) <a href="#" class="helplinkstatus">help</a>
    @Html.LabelFor(m => m.UserOwnerName)
    @Html.TextBoxFor(m => m.UserOwnerName) <a href="#" class="helplinkowner">help</a>
    <p><input type="submit" id="optionalfields" value="Save" /></p>
}

我为上面链接标签中的每个类都有一个 jquery 事件处理程序。示例:

$(document).on("click", ".helplinkcampaign", function () {
    var url = '@Url.Action("Campaign", "Home")';
    $("#divPopup").dialog('option', 'title', 'Campaign Name Help');
    $.get(url, function (data) {
        $("#divPopup").html(data);
        $("#divPopup").dialog("open");
    });
});

如您所见,我将 URL 解析为 Controller 操作结果并下载该 View 的内容,并在 jquery ui 对话框中显示该内容。

此页面正在进行中,但从昨天开始工作,今天已停止。我收到的错误是:

Failed to load resource: the server responded with a status of 404 (Not Found)

控制台中旁边的链接是

http://localhost:12345/Home/@Url.Action(%22Campaign%22,%20%22Home%22)

而不是

http://localhost:12345/Home/Campaign

我知道在这种情况下我可以手动将 url 变量设置为营销事件,但我更喜欢让 MVC 解决它。

有什么原因导致此问题停止解决吗?

最佳答案

正如@Y.Tceretian指出的,可能是您将js代码移动到单独的js文件中,因此如果它不在 View 中而是在js文件中,则不会执行razor代码。

你可以做的是,你可以使用 data 属性来设置 url,然后在点击事件中读取它,如下所示:

@Html.TextBoxFor(m => m.CampaignName) 
<a href="#" data-url="@Url.Action("Campaign", "Home")" class="helplinkcampaign" >help</a>

然后你的 jquery click 事件处理程序读取属性值:

$(document).on("click", ".helplinkcampaign", function () {
    var url = $(this).data("url"); // note this
    $("#divPopup").dialog('option', 'title', 'Campaign Name Help');
    $.get(url, function (data) {
        $("#divPopup").html(data);
        $("#divPopup").dialog("open");
    });
});

关于jquery - MVC 帮助链接 Url.Action 不再解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41190265/

相关文章:

jquery - CSS:固定大小的div,固定的垂直位置和水平居中?

jQuery ajaxStart 与唯一元素绑定(bind)

c# - 无法复制文件“C:\…\packages\…WebApi.Core.4.0.20710.0…System.Web.Http.dll”

javascript - 在 MVC Javascript 函数中,使用 Ajax.ActionLink 不会触发

c# - 如何在文件夹内的 Controller 中获取部分 View Html?

javascript - 使用 jquery 删除父 span 标签?

javascript - 为什么 Lazyload 不显示图片?

asp.net - User.Identity.GetUserId() 方法在 Web Api 2 Controller 中不起作用

ASP.NET MVC 与数据库一起发布

jquery - 如何在 ajax.action 链接上打开 Bootstrap 模式弹出窗口?