我有一个应用程序,如果我点击一个链接(在/ImagesList/Index.cshtml),它会把我发送到另一个目录(/ImagesAnalysis/…)的视图。通过一个控制器函数加载一些数据。
我的问题是,我希望有url/ImageAnalysis/Index但我实际上只有/ImageAnalysis
ImagesList控制器 public ActionResult View(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
return RedirectToAction("Open", "ImagesAnalysis", new { id = id });
}
ImagesAnalysis控制器 public ActionResult Open(int id)
{
//Load up items from DB
return RedirectToAction("Index");
}
public ActionResult Index()
{
if (Session["img"] == null)
{
Session["img"] = new ImageModel();
}
return View((ImageModel)Session["img"]);
}
问题是我的Ajax调用到错误的位置
/ImagesAnalysis/Index.cshtml
$("#ImageAccordion").accordion({
collapsible: true,
heightStyle: "content",
activate: function (event, ui) {
$.ajax({
type: "POST",
url: "SetActiveImage",
datatype: "json",
traditional: true,
data: {
ImageNumber: this.id,
},
success: function (Data) {
drawing.src = "/Images/" + Data;
}
});
}
});
当使用firebug时,ajax调用将转到url/SetActiveImage而不是/ImagesAnalysis/SetActiveImage
使用完整的URL路径。=>简单的答案。
通常发生这种情况时,是配置问题。
使用Url帮助器生成路径
url: '@Url.Action("SetActiveImage", "ImagesAnalysis")'