我正在大脑冻结: 我有一个MVC 5项目,它使用bootstrap popover表单来输入日期数据。弹出窗口在主着陆页上调用,数据被字符串化JSON转发到Home控制器中的ActionResult函数,然后Home控制器访问SQL Server db并返回一个JSON数据集,用于构建在cshtml视图中呈现的基于D3的可视化。 到目前为止,每件事都有效,数据是有效的模型和viz已经过单元测试。 Home控制器有两个控制器: popover js脚本(来自http://jsfiddle.net/itsabhik/cxm4rt2u/2/):
$('.main-attributes').on('shown.bs.popover', function () {
$('.submit').click(function () {
var fromval = $('.popover #fromvalue').val();
var toval = $('.popover #tovalue').val();
var option = {
url: '/Home/LoanCount',
data: JSON.stringify({ dStart: fromval, dEnd: toval }),
method: 'post',
dataType: 'json',
contentType: 'application/json;charset=utf-8'
};
$.ajax(option).done(function (data) {
return (data);
})
$('.main-attributes').popover('hide');
});
$('.cancel').click(function () {
$('.main-attributes').popover('hide');
});
});
控制器代码:
public ActionResult LoanCount(DateTime dStart, DateTime dEnd)
{
int iStart = (dStart.Year * 10000) + (dStart.Month * 100) + dStart.Day;
int iEnd = (dEnd.Year * 10000) + (dEnd.Month * 100) + dEnd.Day;
var json = Models.LoanCount.getCountStats (iStart, iEnd);
var data = JsonConvert.DeserializeObject<List<Models.LoanCount>> (json);
ViewBag.jData = json;
return Redirect ("/Views/Home/LoanCount.cshtml"); /* This is one of the
redirect variations that have been tried */
}
我遇到的问题是我使用的所有Redirect变体都会抛出404未找到的异常。调用RedirectToAction(...),无参数的ActionResult会抛出403异常。存在cshtml文件,路径已经过验证和更正。
正在使用的浏览器是Chrome。缺少什么 - 关于这个问题的任何线索,建议?
答案 0 :(得分:0)
您可以使用波浪号(〜)前缀返回视图。因此,URL不会更改。
return View("~/Views/Home/LoanCount.cshtml");
如果要更改URL,则必须使用控制器名称和方法名称的RedirectToAction
方法。
答案 1 :(得分:0)
上一条评论:胖手指输入密钥。修复是禁用ajax func,因为它发布了一个回调,用参数值重做URL并定义窗口位置而不是发出ajax调用。它现在按预期工作。哇!!
$('.main-attributes').on('shown.bs.popover', function () {
$('.submit').click(function () {
var fromval = $('.popover #fromvalue').val();
var toval = $('.popover #tovalue').val();
var option = {
url: "/Home/LoanCount?dStart=" + fromval + "&" + "dEnd=" + toval,
data: JSON.stringify({ dStart: fromval, dEnd: toval }),
method: 'post',
dataType: 'json',
contentType: 'application/json;charset=utf-8'
};
window.location.href = option.url;
$('.main-attributes').popover('hide');
});
$('.cancel').click(function () {
$('.main-attributes').popover('hide');
});
});
控制器:
public ActionResult LoanCount(DateTime dStart, DateTime dEnd)
{
int iStart = (dStart.Year * 10000) + (dStart.Month * 100) + dStart.Day;
int iEnd = (dEnd.Year * 10000) + (dEnd.Month * 100) + dEnd.Day;
var json = Models.LoanCount.getCountStats (iStart, iEnd);
var data = JsonConvert.DeserializeObject<List<Models.LoanCount>> (json);
ViewBag.jData = json;
return View ("~/Views/Home/LoanCount.cshtml");
}