2011-03-17 83 views
1

不知道如何字這個正確.. 所以我有其中有一個強類型的視圖模型作爲視圖:partialview模型更新父視圖

class MyViewModel 
{ 
    public string MyName get; set; 
    public string DateOfBirth get; set; 
    public Address MyAddress get; set; 
} 

class Address 
{ 
    public string Street get; set; 
    etc... 
} 

我加載與MyViewModel的inital視圖,並使用下面顯示一個部分視圖來加載地址(這樣地址輸入可以被重用)。

視圖包含在用戶名列表的下拉列表,在下拉菜單中選擇一個值向下調用AJAX .change函數執行以下操作:

$.get('/User/DisplayAddress/', {'selection': selection }, function (html) { 

$('#addressBlock').html(html); 

}); 

所有作品great..and HTML被加載..但是,視圖模型和地址現在已斷開連接。所以當我提交我的頁面時,ViewModel中的MyAddress現在包含一個空值。

我應該如何在mvc2/ajax中正確地做到這一點?

另一種方法我用了使用'<% RenderPartial("viewname", Model.MyAddress); %> 其工作,但我還是要以JSON返回數據,並在Java函數的值手動添加到域 - 這個效果很好..但它很凌亂時MyAddress字段我包含幾個字段,硬編碼添加到輸入字段的值看起來很可怕。

回答

1

問題是從部分插入HTML時,綁定被搞砸了。 我的分部視圖沒有遵循相同的命名空間,所以輸入字段失去了對父視圖模型的綁定。

即我的文本框現在擁有的命名約定MyViewModel.Address.Street等

我使用jQuery的方法來替換HTML中的DIV容器。問題在於綁定在顯示html時被搞砸了。

我設置了文本框的「名稱」元素,使其與inputmodel相同,並在插入部分時保持了綁定。

理想情況下,我會使用'平面'viewmodel而不是'繼承'的方法,但我無法在這種情況下。