【发布时间】:2015-09-24 00:10:35
【问题描述】:
这个问题和Sitefinity有关,不是简单的MVC
我正在尝试通过 jQuery 发布帖子以转到服务器,获取 Id,然后在检索到 Id 后,将页面重定向到另一个控制器中的另一个操作。
这总是返回 404,所以我需要你的帮助。
我的行动:
public ActionResult SelectedVariation(string mealsAttribute, string portionsAttribute, string product)
{
Guid productId = new Guid(product);
CatalogManager catalogManager = CatalogManager.GetManager();
EcommerceManager ecommerceManager = EcommerceManager.GetManager();
ProductListWidgetModel model = new ProductListWidgetModel();
model.Product = catalogManager.GetProduct(productId);
model.ProductVariations = catalogManager.GetProductVariations(productId).ToList();
model.SelectedVariation = model.ProductVariations.Where(x => x.Variant.ToLower().Contains(mealsAttribute.ToLower()) && x.Variant.ToLower().Contains(portionsAttribute.ToLower())).FirstOrDefault().Id.ToString();
return RedirectToAction("Index", "RegisterOrderAccountForm", new { Id = model.SelectedVariation.ToString()});
//I've tried these ones aswell
//return Json(new { result = "Redirect", url = Url.Action("Index", "RegisterOrderAccountForm", new { Id = model.SelectedVariation.ToString()})}, JsonRequestBehavior.AllowGet);
// new RouteValueDictionary(new { controller = "RegisterOrderAccountForm", action = "Index", Id = model.SelectedVariation.ToString() })), JsonRequestBehavior.AllowGet);
}
还有我的 View 的 JS 代码:
function GetSelectedVariation() {
var meals = $('#MealsSelector').val();
var portions = $('#PortionsSelector').val();
$.getJSON('@Url.Action("SelectedVariation")', { mealsAttribute: $('#MealsSelector').val(), portionsAttribute: $('#PortionsSelector').val(), product: '@Model.Product.Id' }, function (route) {
window.location = route;
//Tried this aswell but to no avail
//window.location.href = getRootUrl() + route.RouteValues[1].Value + '/' + route.RouteValues[0].Value + '/' + route.RouteValues[2].Value;
});
}
总是得到 404,我做错了什么?我注意到的另一件事是,在响应中,Id 值没有与当前表单一起出现。
将 ajax 调用到一个动作,然后重定向到另一个动作/控制器的正确方法是什么?
【问题讨论】:
-
当你想重定向时使用ajax没有意义吗?只需使用表单并进行正常提交即可。
标签: jquery ajax asp.net-mvc