Razor Core 2 Выходная переменная внутри HTML-тега - PullRequest
0 голосов
/ 26 сентября 2018

Я не могу вывести переменную внутри тега.Раньше я делал это как код ниже в бритве MVC2.Но теперь похоже, что тег выглядит как какой-то зарезервированный тег.

<select class="form-control" id="CompanyId" name="CompanyId">
    @{ 
        foreach (var item in Model.Companies)
        {
            var selected = "";

            if (item.CompanyId == Model.CompanyId)
            {
                selected = "selected";
            }

            <option value="@item.CompanyId" @selected>@item.Name</option>
        }
    }
</select>

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

Это неправильный способ написания бритвы, вы воспринимаете это как текст 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);
}
0 голосов
/ 26 сентября 2018

Попробуйте другой подход, как показано ниже:

<select class="form-control" id="CompanyId" name="CompanyId">
    @{ 
        foreach (var item in Model.Companies)
        {
            if (item.CompanyId == Model.CompanyId)
            {
                <option value="@item.CompanyId" selected>@item.Name</option>
            }
            else
            {
                <option value="@item.CompanyId">@item.Name</option>
            }
        }
    }
</select>
...