我有一个jQuery TabControl的控制器。
public class MainFrameController : Controller
{
public ActionResult AddTab(int menuItemId)
{
return View("Index");
} }
public void RemoveTab( string menuInstanceName)
{
}
}
方法MaineFrame.NewTab si MainFram.RemoveTab - 使用现有标签保持最新的字典。
用于在视图中添加和删除选项卡我有jQuery脚本:
$(function () {
var tabTitle = $("#tab_title"),
tabContent = $("#tab_content"),
tabTemplate = "<li><a href='#{href}'>#{label}</a> <span class='ui-icon ui-icon-close' role='presentation'>Remove Tab</span></li>",
tabCounter = 2;
var tabs = $("#tabs").tabs();
// close icon: removing the tab on click
tabs.delegate("span.ui-icon-close", "click", function () {
var panelId = $(this).closest("li").remove().attr("aria-controls");
$("#" + panelId).remove();
// !!!!here I want to call MainFrame.RemoveTab action controller form panelId !!!!
tabs.tabs("refresh");
});
//remove the panel
tabs.bind("keyup", function (event) {
if (event.altKey && event.keyCode === $.ui.keyCode.BACKSPACE) {
var panelId = tabs.find(".ui-tabs-active").remove().attr("aria-controls");
$("#" + panelId).remove();
tabs.tabs("refresh");
}
});
});
我需要在jQuery中调用一个Controller Action(其中是row:// !!!!这里我想调用MainFrame.RemoveTab动作控制器表单panelId !!!!)
最后我发现了:
$.post("/MainFrame/RemoveTab",
{ menuInstanceName: panelId },
function (data,status) {
alert("\nStatus: "+ status);
}
);
但我有另一个问题:虽然在开发者机器上工作正常,但$。post不能在生产服务器上运行。 ...而且我不明白为什么:我检查并仔细检查文件是否在生产服务器上正确更新 - 它们是。
...我发现为什么不在生产服务器上工作:在生产服务器上,根路径类似于{domain} / {virtual dir},jQuery创建的路径从{domain}开始。 所以,我尝试使用Url.Content,如bellow:
$.post('@Url.Content("~/MainFrame/RemoveTab")',
{ menuInstanceName: panelId },
function (data,status) {
alert("Status: "+ status);
}
);
遗憾的是不能正常工作(与Url.Action相同的结果)。 有什么问题?
答案 0 :(得分:0)
我找到了一个有效的解决方案:
$.post('RemoveTab',
{ menuInstanceName: panelId },
function (data,status) {
//alert("Status: "+ status);
}
);
虽然我需要触发的动作是在同一个控制器中,但如果没有......