ビューに2つのモデルがあります。 forループを実行している間、モデルの属性の1つの値を他のモデル属性に設定できるようにしたい。明確化のためのコード例: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に渡されることはありません。 (modelbundleインサイド)例えば
[HttpPost]
public ActionResult Post(modelbundle model)
{
List<Two> list = model.Two; // Model bundle contains a list. Eg. model.Two[0].ObjectId = null
...
}
モデル-2:Davidさんの助けを借りて
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