2012-09-18 99 views
0

首先,让我说我对MVC3相当陌生,所以我可能会做一些不太正确的事情。我试图寻找答案,但我想我可能会使用错误的搜索条件。从TextBox模糊MVC3 jQuery更新模型

* 问题: - *我有一个表单,允许用户输入From值和To值。一旦输入From值,我想使用jQuery更新模型上的StartTime值。然后,我会继续填写表格填入收件人和数量,最后点击确定并将值发送回控制器。

如何在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> 
+0

你如何标记答案... – Gho5t

回答

0

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

$(function() { 

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

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

    }); 

}); 

或者你可以得到真正的坚果并创建一个名为开始时间会话变量并设置时间出现。然后,当您提交表单时,从那里获取值。

1

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

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

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

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

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

+0

我意识到模型只存在于服务器上,也许我的问题措辞不好。我想我想知道的是,模糊事件有可能调用服务器来获取时间,并将它作为新模型的一部分返回,而不用整个表单的帖子。 – lostinwpf

+1

@lostinwpf - 嗯,这主要是ajax的用途。它允许您将数据发布到服务器,接收更新并修改现有页面而不刷新整页。 –

0
$('input[name=From]').change(function() { 
     $('#StartTime').val(set_your_value_here); 
    } 

我发现输入更改比模糊更频繁地工作。

+0

Gho5t的答案是更好的,如果需要到服务器的旅程...除了我会认为你需要一个Ajax.Post而不是.Get。 – KennyZ