【发布时间】:2009-03-24 15:39:26
【问题描述】:
我们想对视图中的某些值执行一些计算...所以当用户在输入中输入一个值时...我们想返回服务器...执行计算并“刷新”使用新值查看...使用现在的代码,它会输入正确的(...或至少是我要求的)控制器操作,正确执行计算并将更新的 ViewData 返回到视图。当我通过为视图构建 html 的循环时,ViewData 具有更新的值,但是当视图显示在浏览器上时,值没有改变......
这里是javascript
$('input.changeValue').change(function() {
$('body').css('cursor', 'wait');
var changedAmt = this.value;
var frmUpdate = $('form#frmUpdate').serializeArray();
fooSoldObj = new Object();
fooSoldObj.name = 'fooSoldAmt';
fooSoldObj.value = changedAmt;
frmUpdate[frmUpdate.length] = fooSoldObj;
$.ajax(
{
type: $('form#frmUpdate')[0].method,
url: $('form#frmUpdate')[0].action,
data: frmUpdate,
dataType: 'html',
error: function(error) {
alert('frmUpdate error' + error);
}
}
);
setTimeout(function() {
$('body').css('cursor', 'default');
}, 0);
});
frmUpdate 表单的 html 如下所示
<form action="/Forecast/Update" id="frmUpdate" method="post" name="frmUpdate">
<span>
<input id="HiddenForecastID" name="HiddenForecastID" type="hidden" value="XXX" />
<input id="HiddenForecastYear" name="HiddenForecastYear" type="hidden" value="2009" />
<input id="HiddenForecastMonth" name="HiddenForecastMonth" type="hidden" value="3" />
</span>
</form>
现在只是为了进一步混淆,未正确显示的数据在视图中以不同的形式出现。我有两个表单的原因(对或错)是视图上的另一个表单启动了保存例程。
这是控制器动作的相关部分
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Update(FormCollection frmUpdate)
{
//go off and do some stuff...this part works as the ViewData
//is correct....meaning it has the updated values that
//we want to see displayed in the view
return View("MyView", ViewData[someData]);
}
我在想,它不起作用的原因可能是我正在更新一个表单,然后要求 MVC 视图引擎更新/刷新另一个表单(但请记住,当我通过循环时构建页面的视图,数据已更新但浏览器中的页面未更新)...如何使视图显示正确的 html?
/******************************************************
添加以下代码只是为了测试 RedirectToAction
上面的 return View("blah") 东西上的 ajax 调用不会出错
************************************************/
附:就像这样在控制器中尝试了 RedirectToAction
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Update(FormCollection frmUpdate)
{
//go off and do some stuff...this part works as the ViewData
//is correct....meaning it has the updated values that
//we want to see displayed in the view
return RedirectToAction("MyView", new RouteValueDictionary( new { controller = "Forecast", action = "MyView", addMonth = monthAdd } ) );
}
但随后 ajax 调用错误并出现 500 错误
谢谢,
格雷格
【问题讨论】:
标签: asp.net-mvc jquery