2011-12-09 21 views
0

我在MVC3表單上有兩個字段,它們必須表示相同的值。如果更新了它應該更新另一個並顯示正確的值(得到愛的要求)。對於可能很明顯的原因,該字段(頁面上的第二個字段)沒有正確更新。有沒有辦法實現我所需要的?更新MVC表單上兩個地方的相同屬性

例如:

第一示例

<li class="identifier-controls"   @Model.IdentifierConfigurator.GenerateDataAttributes("ssn")> 
     @Html.TextFieldFor("Social Security Number", m => m.SocialSecurityNumber).SSN() 
    </li> 

may appear twice on that form (In two different spots). (At this point, both of the controls have the same ID and name) 

OR:

第二示例

<li class="identifier-controls"   @Model.IdentifierConfigurator.GenerateDataAttributes("ssn")> 
     @Html.TextFieldFor("Social Security Number", m => m.SocialSecurityNumber).SSN() 
    </li> 

<li class="identifier-controls"   @Model.IdentifierConfigurator.GenerateDataAttributes("ssn")> 
     @Html.TextFieldFor("Social Security Number", m => m.Person.Description.SSN).SSN() 
    </li> 

將出現在窗體上。此時,輸入的ID不同,但只會更新它們。

這裏是所生成的HTML:

<ol class="field-list display"> 

    <li id="party-name"><span class="label">Name</span><span id="FormalDisplayName" class="value" style="width:140px">Guy, Bad</span></li> 

    <li><span class="label">Aliases</span><span id="AliasNames" class="notentered" style="width:140px">Not entered</span></li> 

    <li><span class="label">Status</span><span id="PartyStatusName" class="notentered" style="width:140px">Not entered</span></li> 

    <li><span class="label">Gender</span><span id="Description_Gender" class="notentered" style="width:140px">Not entered</span></li> 

    <li><span class="label">Juvenile</span><span id="Description_IsJuvenile" class="value" style="width:140px">No</span></li> 

    <li><span class="label">Ethnicity</span><span id="Description_Ethnicity" class="notentered" style="width:140px">Not entered</span></li> 

    <li><span class="label">Residential Status</span><span id="Description_ResidentialStatus" class="notentered" style="width:140px">Not entered</span></li> 

    <li><span class="label">Marital Status</span><span id="Description_MaritalStatus" class="notentered" style="width:140px">Not entered</span></li> 

    <li><span class="label">Religion</span><span id="Description_Religion" class="notentered" style="width:140px">Not entered</span></li> 

    <li><span class="label">Citizenship</span><span id="Description_Citizenship" class="notentered" style="width:140px">Not entered</span></li> 

    <li><span class="label">Birth City</span><span id="Description_BirthCity" class="notentered" style="width:140px">Not entered</span></li> 

    <li><span class="label">Date of Birth</span><span id="Description_BirthDate" class="notentered" style="width:140px">Not entered</span></li> 

    <li><span class="label">Date of Death</span><span id="Description_DeathDate" class="notentered" style="width:140px">Not entered</span></li> 

    <li><span class="label">Est. Age at Incident</span><span id="Description_EstimatedAgeAtIncident" class="notentered" style="width:140px">Not entered</span></li> 

    <li><span class="label">Adoption Date</span><span id="Description_AdoptionDate" class="notentered" style="width:140px">Not entered</span></li> 

    <li><span class="label">Multiple Birth</span><span id="Description_MultipleBirthName" class="notentered" style="width:140px">Not entered</span></li> 

    <li><span class="label">Email</span><span id="Description_Email" class="notentered" style="width:140px">Not entered</span></li> 



    <li><span class="label">Identifiers</span><span id="SuspectIdentifiersDisplay" class="value" style="width:400px">Prof<span class='value-display'>&nbsp;123</span><span class='separator'>&nbsp;|&nbsp;</span>FBI<span class='value-display'>&nbsp;123</span><span class='separator'>&nbsp;|&nbsp;</span>SSN<span class='value-display'>&nbsp;222-22-2222</span><span class='separator'>&nbsp;|&nbsp;</span>ITN<span class='value-display'>&nbsp;123</span><span class='separator'>&nbsp;|&nbsp;</span>BCI<span class='value-display'>&nbsp;13</span><span class='separator'>&nbsp;|&nbsp;</span>ID<span class='value-display'>&nbsp;123</span><span class='separator'>&nbsp;|&nbsp;</span>DL<span class='value-display'>&nbsp;123</span><span class='separator'>&nbsp;|&nbsp;</span></span></li> 

</ol> 

這個HTML(這是來自實施例2的HTML),並且在第一實施例中生成的HTML之間的唯一區別是,這兩個控制有相同的ID和名稱。這裏是一個由BeginRouteForm HTML輔助調用時提交被稱爲控制器方法會發生什麼:

公衆的ActionResult更新(INT partyId,數據的FormCollection) {VAR 黨= Party.Find(partyId).OrNotFound( ); var vm = new PartyEditViewModel(party.Case,party);

try 
    { 
    UpdateModel(vm, data); 

    return JsView("Update.js", party); 
    } 
    catch (UpdateModelException) 
    { 
    return JsView("Edit.js", vm); 
    } 
} 
+0

你還可以發佈頁面加載時生成的html嗎?此外,您是否正在尋找表單提交後發生的變化,或者您是否在尋找更具動態性的內容,如果我編輯一個文本字段,另一個文本字段也會發生變化?如果我不瞭解您的要求,請糾正我。 – mreyeros

+0

我只是在提交表單後尋找要更改的值。在我們的應用程序中,一旦表單被提交,處理就會發生,然後用戶被帶到一個詳細信息頁面,該頁面只顯示更新後的表單值爲只讀。當再次單擊編輯按鈕時,表單上面的兩個控件都應該包含相同的值。無論哪個字段被更新,這應該發生。 –

+0

好的,並在您的控制器操作中,您發送到處理更新的發佈操作的參數是什麼? – mreyeros

回答

1

確定它看起來像什麼原因造成的問題是,你要Html.TextFieldFor調用可能會創建具有相同的名稱和編號綁定到單獨的模特屬性兩個控件。如果是這種情況,您需要正確加上控件的ID和名稱前綴,以便在模型綁定啓動時,它將正確地將值綁定到模型的屬性上。

+0

這正是我所說的 –

+1

好吧,我想我已經知道了。這些問題與兩個字段具有相同名稱/編號(如上所述)有關。看起來,因爲在點擊編輯按鈕時填入了值,所以具有值的第一個控件將成爲它用來更新的值。因此,如果我更改出現的第一個控件的值,則更新將完美運行,並且您會注意到一個更改。如果第二個控件更新,第一個控件仍舊具有舊值,這就是更新不被注意的值。謝謝! –

+1

非常高興你能弄明白。 – mreyeros

相關問題