В последнее время я работаю над тем, чтобы в моих проектах было включено больше правил анализа кода Visual Studio. Тем не менее, я продолжаю натыкаться на правило CA2227: «Свойства коллекции следует читать только».CA2227 и привязка модели ASP.NET
Скажем, у меня есть класс модели, как это:
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);
}
р с этим подходом, заключается в том, что моя собственная собственность List<string>
нарушает правило CA2227. Если бы я не выполнял привязку к модели, я мог бы сделать свойство только для чтения и заполнить коллекцию в другом месте. Однако этот подход не будет работать с привязкой модели по умолчанию. На данный момент я просто добавляю сообщение о подавлении, когда оно встречается в модели представления.
Есть ли способ связать коллекцию предметов в модели без нарушения CA2227? Или добавляет сообщение о подавлении моего лучшего варианта здесь?
Вы пытались инициализировать список перед отправкой его на ваш просмотр? –