2011-03-03 114 views
8

嗨,在模型對象上設置屬性?

我建立一個ASP.NET MVC的網站和整個問題都拼命地跑。在項目中,我得到了一個包含一些屬性,例如模型視圖類:

public class myModelView 
{ 
    public int MyProperty1(){ get; set;} 
    public int MyProperty2(){ get; set;} 
    public int MyProperty3(){ get; set;} 
} 

這個模型視圖類綁定到一個類型的視圖,我需要能夠設置的屬性。我如何使用JavaScript/jQuery來做到這一點?我試着用Model.MyProperty1 = 1,但那不起作用?

BestRegards

+0

您是否需要在視圖中使用JavaScript編輯道具或是否需要使用JavaScript將它們發送到服務器? – 2011-03-03 13:21:59

+0

我需要設置ModelView的屬性,而不是觸發提交。 – Banshee 2011-03-03 13:54:58

回答

22

您無法使用javascript設置服務器端值。您可以使用HTML幫助器將這些值綁定到輸入字段(文本框,隱藏字段,textareas,下拉列表...),然後使用javascript您可以修改這些輸入字段的值。

因此,舉例來說,如果你有一個隱藏字段:

<input type="hidden" name="foo" id="foo" value="bar" /> 

,你可以修改它的值是這樣的:當包含表單提交到服務器然後

$('#foo').val('some new value'); 

的新值被綁定到你的視圖模型。

+0

我有一個模型,公開了一個'MyType'數組,它有兩個屬性,'Name'和'Value'。我希望用戶能夠向父模型添加和移除名稱 - 值對的行,並且它將一直等到整個表單被提交併保存。如何?? – Shimmy 2013-04-25 01:07:33

2

您正在嘗試設置在客戶端服務器端屬性 - 它不會工作。 您的視圖模型僅在呈現視圖時才存在於服務器上。一旦將響應發送到瀏覽器,您的課程就不再存在。

如果你想從客戶端傳遞一些數據到服務器,你必須:

  • 發佈形式,或
  • ,從AJAX請求

看看jQuery ajax方法。

ViewModel用於將數據從控制器傳遞到視圖,以便視圖可以呈現HTML。呈現HTML後,ViewModel被丟棄。沒有意義的是在視圖中設置ViewModel屬性,因爲稍後沒有東西會使用它們。

我相信你來自WebForms(UpdatePanel)背景。 MVC是一個總體不同的概念/架構的。它以不同於WebForms/UpdatePanel的方式工作。

+0

假設我得到了以下ModelView類hierarki MyClass> F> Order,我將F屬性發送到一個空間視圖,從這裏我可以設置$('#F_Order')並將該值返回給服務。我需要在主要的aspx文件中做同樣的事情,並且我已經嘗試過'#Model_F_Order'沒有成功? Maby我必須將該屬性綁定到隱藏字段才能使其工作? – Banshee 2011-03-03 14:00:10

+0

'將此價值返回給服務'中的'服務'是什麼? – 2011-03-03 14:06:21

+0

對不起,ModelView將被設置在它將被髮送到視圖的服務端。然後將視圖發送給客戶端,當客戶端提交時,默認綁定器將嘗試將綁定(在本例中)綁定到ModelView。我需要的是在這個ModelView上設置屬性,但我認爲我需要的只是一個綁定到ModelView類的適當屬性的隱藏字段。 – Banshee 2011-03-03 15:03:22