4
最近,我一直在努力在我的項目中啓用更多的Visual Studio代碼分析規則。但是,我不斷碰撞規則CA2227:「收集屬性應該是隻讀的」。CA2227和ASP.NET Model Binding
說我有這樣一個模型類:
public class Foo
{
public string Name { get; set; }
public List<string> Values { get; set; }
}
我有一種強烈的映射視圖頁面:
@using (Html.BeginForm())
{
@Html.LabelFor(m => m.Name)
@Html.EditorFor(m => m.Name)
for (int i = 0; i < Model.Values.Count; i++)
{
<br />
@Html.LabelFor(m => Model.Values[i]);
@Html.EditorFor(m => Model.Values[i]);
}
<button type="submit">Submit</button>
}
在ASP.NET MVC,我可以寫在我的行動控制器將這個輸入自動綁定到一類Foo
類型:
[HttpPost]
public ActionResult ProcessForm(Foo model)
{
return View(model);
}
在p用這種方法處理這個問題,就是我的List<string>
汽車屬性違反了規則CA2227。如果我沒有進行模型綁定,我可以使屬性只讀並在其他地方填充集合。但是,該方法不適用於默認的模型綁定器。現在,我剛剛在視圖模型中添加了抑制消息。
有沒有一種方法可以綁定模型中的項目集合而不違反CA2227?或者在這裏添加一個抑制消息我最好的選擇?
你有沒有嘗試初始化列表之前發送到您的視圖? –