Как установить мои чекбоксы в asp.net mvc? Я использую Checkbox или CheckboxFor? - PullRequest
1 голос
/ 19 декабря 2011

У меня есть этот сценарий.У меня есть 10 флажков, которые должны быть сгенерированы (этот список может расти и поступает из базы данных).

Теперь у пользователя может быть только 3 из 10. Я хочу всегда показывать пользователю все 10 флажков, но проверять только те из них, которые у него есть.

Я не уверен, как работают моя модель и страницадолжен выглядеть?Я не уверен, какой HTML-помощник использовать.Если мне нужно свойство (bool) для каждого из значений в базе данных, показывающее, какое значение они имеют.

В моей базе данных у меня нет битового значения, показывающего, есть оно или нет.У меня много-много отношений.У пользователя может быть много функций, а у функции может быть много пользователей.

1 Ответ

0 голосов
/ 19 декабря 2011

Создание моделей представления для описания ваших User и Feature объектов. Затем вы можете использовать шаблон редактора для отображения флажка.

public class UserFeatureViewModel
{
    public string Name { get; set; }
    public IEnumerable<FeatureViewModel> Features { get; set; }
}

// and the FeatureViewModel
public class FeatureViewModel
{
    public string Name { get; set; }
    public bool IsSelected { get; set; }
}

Я сказал build , так что сделайте это в вашем контроллере, просмотрите модель фабрики или сервис. Экземпляры Feature здесь жестко запрограммированы, но вы хотите получить их из базы данных:

public class UserController : Controller
{
    public ActionResult GetUser(string username)
    {
        var model = new UserFeatureViewModel
        {
            Name = username,
            Features = new[]
            {
                new FeatureViewModel { Name = "Feature abc", IsSelected = true },
                new FeatureViewModel { Name = "Feature def", IsSelected = false },
                new FeatureViewModel { Name = "Feature xyz", IsSelected = true }
            }
        };
        return View(model);
    }
}

Вы можете использовать последующие действия с UserFeatureViewModel параметрами для обновления и т. Д.

Наконец, шаблон редактора в ~/Views/User/EditorTemplates/FeatureViewModel.cshtml будет наследовать FeatureViewModel и использовать помощник Html.CheckBoxFor:

@model FeatureViewModel
<span>@Model.Name</span>
<span>@Html.CheckBoxFor(model => model.IsSelected)</span>

В вашей форме (в «родительском» представлении) используйте помощник EditorFor для визуализации частичного

@Html.EditorFor(model => model.Features)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...