有此資源的負荷在谷歌,但我不能完全明白,我需要在我的情況做:ASP.NET MVC錯誤的做法:可選子模型有了必選屬性
我有這個類:
public class CompanyLanguage : EntityBase
{
public int CompanyId { get; set; }
public int LanguageId { get; set; }
public bool IsDefault { get; set; }
public virtual Company Company { get; set; }
public virtual Language Language { get; set; }
}
Language
被定義爲:
public class Language:EntityBase
{
[Required]
[DisplayName("Language Code")]
public string LanguageCode { get; set; }
[Required]
[MaxLength(2, ErrorMessage ="2 characters maximum")]
[DisplayName("2 Char Language Code")]
public string LanguageCode2Char { get; set; }
[Required]
[DisplayName("Language Name")]
public string LanguageName { get; set; }
public virtual List<LabelLanguage> LabelLanguages { get; set; }
}
運行Fortify Scan回報問題下面爲高優先級:
(ASP.NET MVC錯誤的做法:可選子模型有了必選屬性)
我們不能運行設防掃描 - 它是被別人跑,所以我需要改變這樣的權利它不會直接返回。
我看過的所有資源都表明可以進行底層攻擊 - 即無效Language
,儘管Language
具有一些必需的屬性。
對我來說,這是一個有效的場景 - Language
所需的屬性只有在Language
不爲空時才需要。
那麼我該怎麼做才能解決這個問題呢?我需要public int LanguageId { get; set; }
,還是public virtual Language Language { get; set; }
或兩者兼而有之?
還是我完全錯了,我還得做點別的?正如我所說的,我不能測試這些軟件,因爲軟件必須被送去參加測試,否則我會嘗試一切。
所以你直接發送這個ef實體到沒有視圖模型的視圖? – Fran
我是 - 我讀過,我真的應該使用視圖模型,但我的視圖模型將像字面上完全一樣,似乎我增加了很多代碼和維護沒有多少獎勵。你怎麼看? – Rick
以及獎勵是關注和更清晰的代碼分離。由於您正在向視圖發送多對多連接實體,因此您可能不需要所有這些信息。很高興看到視圖和控制器操作來查看你在做什麼,但我猜測你已經有了公司和語言的下拉菜單。如果是這種情況,則需要返回到視圖的唯一方法是列出每個下拉列表的Id和說明,而不是完整的ef實體。 – Fran