我在視圖中有2個模型。我希望能夠在通過for循環時將模型的其中一個屬性值設置爲其他模型屬性。澄清實施例的代碼:MVC Razor - 將模型值設置爲其他模型值?
@model xxx.Models.modelbundle
@using (Html.BeginForm("Post", "Admin", FormMethod.Post))
{
for (int item = 0; Model.One.Count > item; item++)
{
<tr>
<td>
@Html.DisplayFor(modelItem => Model.One[item].ObjectId)
</td>
<td>
@Html.CheckBoxFor(modelItem => Model.Two[item].set)
</td>
@Model.Two[item].ObjectId = Model.One[item].ObjectId; // Here. How to set them?
</tr>
}
<div>
<input type="submit" id="button" value="Change Me" href="/Admin">
<div></div>
</div>
}
編輯:
的ObjectId不會通過到Model.Two傳遞。例如
[HttpPost]
public ActionResult Post(modelbundle model)
{
List<Two> list = model.Two; // Model bundle contains a list. Eg. model.Two[0].ObjectId = null
...
}
模型的兩個(內部modelbundle):
public class
{
public bool get { get; set; }
public bool list { get; set; }
public bool set { get; set; }
public bool delete { get; set; }
public bool all { get; set; }
public string ObjectId { get; set; }
public string displayName { get; set; }
}
隨着大衛的幫助 - 這是爲我工作。我知道它可能沒有藍色/黃色變量來實現,但它可以更容易(對我來說)閱讀:
@{
var yellow = Model.One[item].DisplayName;
Model.Two[item].displayName = yellow;
var blue = Model.One[item].ObjectId;
Model.Two[item].ObjectId = blue;
}
@Html.HiddenFor(modelItem => Model.Two[item].displayName);
@Html.HiddenFor(modelItem => Model.Two[item].ObjectId);
你爲什麼在視圖*中設置模型屬性*?這應該在模型發送到視圖之前完成。當然,這不應該起作用。 (你如何確認它沒有?在顯示的代碼中,你永遠不會引用你更新的屬性。)但是也沒有理由首先這樣做。 – David
我知道這不起作用,因爲我模型中的ObjectId總是返回null。此外,因爲我正在使用複選框更改/編輯模型中的屬性 - 我想將它放在正確的位置(這是否合理?)並將其彈出到相同的循環中。 :) – Pikapops
「回來null」*其中*?顯示的代碼從未在設置後引用該屬性。你需要證明這個問題。 – David