首先,让我说我对MVC3很新,所以我可能会做一些不太正确的事情。我试图寻找答案,但我想我可能会使用错误的搜索字词。
* 问题: - *我有一个表单,允许用户输入From值和To值。输入From值后,我想使用jQuery更新Model上的StartTime值。然后,我将继续填写To和Quantity的表单,最后单击OK并将值发送回Controller。
当“发件人”文本框丢失焦点时,如何更新模型上的StartTime?
public class DetailsModel
{
public string From{get;set;}
public string To {get;set;}
public int Quantity{get;set;}
public DateTime StartTime{get;set;}
}
在我看来有一些jQuery如下
<script type="text/javascript">
$(function () {
$('#From').blur(function () {
alert('Work out how to set StartTime On Model here');
});
});
</script>
答案 0 :(得分:1)
简短的回答:你做不到。页面在客户端后,模型就消失了。它不存在。
更新模型的唯一方法是将值发布回服务器。
您可能想要做的是更改本地客户端上的值,使用隐藏字段在最终将更新后的值发回服务器后保存更新的值。然后,您可以在本地更新StartTime以反映该情况。
您对服务器和客户端的分离存在根本性的误解。该模型仅存在于服务器上,而不存在于客户端上。您想在客户端上进行更改,这很好..但您必须在本地跟踪这些更改,然后再提交。
另一种方法是继续向服务器发布更新......但这非常浪费。
答案 1 :(得分:0)
是的,首先,您可以使用javascript获取当前时间,无需转到服务器。如果您确实想要转到服务器,可以使用Ajax并将值存储在隐藏字段中。
$(function () {
$('#From').blur(function () {
$.get('getTime', function(data){
$('#someHiddenField').val(data);
});
});
});
或者你可以真正疯狂并创建一个名为startTime的会话变量并在那里设置时间。然后,当您提交表单时,从那里获取值。
答案 2 :(得分:0)
$('input[name=From]').change(function () {
$('#StartTime').val(set_your_value_here);
}
我发现输入更改比模糊更常用。