我在我的MVC應用程序中發生了一件非常奇怪的事情。我將部分視圖渲染爲引導彈出窗口。控制器的動作看起來是這樣的:Html幫助者在給定某個名字時給出錯誤的值
[HttpGet]
public ActionResult GetModalForm(int id)
{
var vm = CreateViewModel(id)
return PartialView("MyPartialView", vm);
}
這似乎做工精細,視圖模式有兩個字段:
public class MyViewModel
{
public int id { get; set; }
public int MemberId {get ; set;}
}
到目前爲止好,當我把一個破發點中的控制器操作,id和MemberId字段設置正確。
現在,這裏的情況變得有些古怪,我有我的部分觀點如下行(用於測試的問題):
@using()
{
@Html.TextBox("id", Model.id)
@Html.TextBox("something", Model.id)
<input type='submit'/>
}
當此呈現,一號線給我用同等價值的文本框到MemberId字段,第二行給我一個等於id字段的值。我真的不明白這兩條線如何爲同一領域提供不同的價值。奇怪的是,爲什麼第二行讀取MemberId字段?
有沒有人見過類似這樣的事情,或有任何想法可能會導致它?我正在達到智慧的結局。
在此先感謝您的幫助。
UPDATE:
爲了幫助解釋什麼是進一步發生的事情:如果我的視圖模型屬性是ID = x和成員Id = Y。然後下面一行:
@Html.HiddenFor(m => m.id)
將呈現爲:
<input type="hidden" id="id" name="id" value="y"/>
你是什麼意思爲同一field_第一個被綁定到一個命名屬性'id',第二個_giving我不同的值是綁定到一個名爲something'屬性',但你重寫它的值與屬性id的值(一個可怕的做法)顯示你生成的實際html。 –
上面的代碼會給我: – Dean
不可能,除非已將值添加到'ModelState'中。您在GET方法中添加了「MyViewModel」的參數,或者您從POST方法返回視圖,並且在返回視圖之前嘗試設置屬性的值,而不清除「ModelState」。顯示你的控制器方法。 –