2012-09-18 102 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