MVC3 jQuery从TextBox模糊更新模型

时间:2012-09-18 15:21:27

标签: jquery asp.net-mvc-3 razor

首先,让我说我对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>

3 个答案:

答案 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);
    }

我发现输入更改比模糊更常用。