0

首先,让我说我对 MVC3 很陌生,所以我可能正在做一些不太正确的事情。我试图寻找答案,但我想我可能使用了错误的搜索词。

*问题:- *我有一个表单,允许用户输入 From 值和 To 值。输入 From 值后,我想使用 jQuery 更新模型上的 StartTime 值。然后,我将继续填写表格,填写 To 和 Quantity,最后单击 OK 并将值发送回 Controller。

当 From 文本框失去焦点时,如何更新模型上的 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>
4

3 回答 3

1

简短的回答:你不能。一旦页面进入客户端,模型就消失了。它不存在。

更新模型的唯一方法是将值发布回服务器。

您可能想要做的是更改本地客户端上的值,使用隐藏字段来保存更新的值,一旦您最终将它们发布回服务器。然后,您在本地更新 StartTime 以反映这一点。

您对服务器和客户端的分离有一个根本的误解。该模型仅存在于服务器上,而不存在于客户端上。您想在客户端上进行更改,这很好..但您必须在本地跟踪这些更改,然后稍后再提交。

另一种方法是继续向服务器发布更新.. 但这是非常浪费的。

于 2012-09-18T15:29:48.787 回答
0

是的,首先,您可以使用javascript获取当前时间,无需去服务器。如果您真的想访问服务器,您可以使用 Ajax 并将值存储在隐藏字段中。

$(function () {

    $('#From').blur(function () {

        $.get('getTime', function(data){               
            $('#someHiddenField').val(data);
        });

    });

});

或者你可以非常疯狂并创建一个名为 startTime 的会话变量并在那里设置时间。然后,当您提交表单时,从那里获取值。

于 2012-09-18T16:12:51.717 回答
0
    $('input[name=From]').change(function () {
        $('#StartTime').val(set_your_value_here);
    }

我发现输入更改比模糊更有效。

于 2012-09-18T16:19:18.390 回答