Это неправильный способ написания бритвы, вы воспринимаете это как текст HTML.Используйте логическое значение внутри атрибута, и он будет прекрасно использовать атрибут, когда он оценивает значение true, и не будет отображать атрибут вообще, если false (или null).
<select class="form-control" id="CompanyId" name="CompanyId">
@foreach (var item in Model.Companies)
{
<option value="@item.CompanyId" selected="@(item.CompanyId == Model.CompanyId)">@item.Name</option>
}
</select>
Но вы должны использовать помощники тегов ивместо привязки к модели это значительно облегчит обслуживание вашего кода.
Просмотр
@model HomeViewModel
<select class="form-control" asp-for="CompanyId" asp-items="Model.Companies"></select>
Модель (при условии выбора параметровстатичны, иначе заполняются внутри контроллера)
public class HomeViewModel
{
public string CompanyId { get; set; }
public readonly List<SelectListItem> Companies = new List<SelectListItem>()
{
new SelectListItem("Microsoft", "Microsoft"),
new SelectListItem { Value = "Yahoo", Text = "Yahoo" },
new SelectListItem { Value = "Google", Text = "Google", Disabled = true, Selected = false }
};
}
Контроллер
public IActionResult Index()
{
HomeViewModel model = new HomeViewModel
{
CompanyId = "Yahoo"
};
return View(model);
}