ASP.NET SelectList получает значение и отображает его [дубликат]

Связанный .lib-файл связан с .dll

У меня была такая же проблема. Скажем, у меня есть проекты MyProject и TestProject. Я эффективно связал файл lib для MyProject с TestProject. Однако этот файл lib был создан, так как была построена DLL для MyProject. Кроме того, я не содержал исходный код для всех методов в MyProject, но только доступ к точкам входа DLL.

Чтобы решить проблему, я построил MyProject как LIB и связал TestProject с этим .lib-файлом (скопируйте вложенный файл .lib в папку TestProject). Затем я смогу снова создать MyProject как DLL. Он компилируется, поскольку lib, с которым связан TestProject, содержит код для всех методов в классах MyProject.

104
задан Win 22 August 2013 в 14:47
поделиться

7 ответов

Вы можете разделить свою бизнес-логику на viewmodel, поэтому ваше представление имеет более чистое разделение.

Сначала создайте модель просмотра, чтобы сохранить идентификатор, который пользователь выберет, и список элементов, которые будут отображаться в DropDown.

ViewModel:

public class UserRoleViewModel
{
    // Display Attribute will appear in the Html.LabelFor
    [Display(Name = "User Role")]
    public int SelectedUserRoleId { get; set; }
    public IEnumerable<SelectListItem> UserRoles { get; set; }
}

Ссылки:

Внутри контроллера создайте метод, чтобы получить список UserRole и преобразуйте его в форму, которая будет представлена ​​в представлении.

Контроллер:

private IEnumerable<SelectListItem> GetRoles()
{
    var dbUserRoles = new DbUserRoles();
    var roles = dbUserRoles
                .GetRoles()
                .Select(x =>
                        new SelectListItem
                            {
                                Value = x.UserRoleId.ToString(),
                                Text = x.UserRole
                            });

    return new SelectList(roles, "Value", "Text");
}

public ActionResult AddNewUser()
{
    var model = new UserRoleViewModel
                    {
                        UserRoles = GetRoles()
                    };
    return View(model);
}

Ссылки:

Теперь, когда создана модель представления, упрощается формализация представления

Вид:

@model UserRoleViewModel

@Html.LabelFor(m => m.SelectedUserRoleId)
@Html.DropDownListFor(m => m.SelectedUserRoleId, Model.UserRoles)

Ссылки:

Это приведет к:

<label for="SelectedUserRoleId">User Role</label>
<select id="SelectedUserRoleId" name="SelectedUserRoleId">
    <option value="1">First Role</option>
    <option value="2">Second Role</option>
    <option value="3">Etc...</option>
</select>
210
ответ дан Romoku 31 August 2018 в 18:24
поделиться

Для вызова вашей функции DropDownListFor требуется еще несколько параметров. Вам нужен SelectList, как в следующем вопросе SO:

MVC3 DropDownListFor - простой пример?

С тем, что у вас там, вы только сказали где хранить данные, а не где загружать список из.

2
ответ дан Community 31 August 2018 в 18:24
поделиться
   @{
        List<CategoryModel> CategoryList = CategoryModel.GetCategoryList(UserID);
        IEnumerable<SelectListItem> CategorySelectList = CategoryList.Select(x => new SelectListItem() { Text = x.CategoryName.Trim(), Value = x.CategoryID.Trim() });
    }
    <tr>
        <td>
            <B>Assigned Category:</B>
        </td>
        <td>
            @Html.DropDownList("CategoryList", CategorySelectList, "Select a Category (Optional)")
        </td>
    </tr>
1
ответ дан Deathstalker 31 August 2018 в 18:24
поделиться

Что-то близко к:

@Html.DropDownListFor(m => m.UserRole, 
   new SelectList(Model.Roles, "UserRoleId", "UserRole", Model.Roles.First().UserRoleId), 
   new { /* any html  attributes here */ }) 

Для заполнения DropDownListFor вам нужен SelectList. Для любых HTML-атрибутов, которые вам нужны, вы можете добавить:

new { @class = "DropDown", @id = "dropdownUserRole" }
10
ответ дан Jonesopolis 31 August 2018 в 18:24
поделиться

Один способ может быть:

    <select name="listbox" id="listbox">
    @foreach (var item in Model)
           {

                   <option value="@item.UserRoleId">
                      @item.UserRole 
                   </option>                  
           }
    </select>
23
ответ дан neildt 31 August 2018 в 18:24
поделиться

Вместо List<UserRole> вы можете позволить вашей модели содержать SelectList<UserRole>. Также добавьте свойство SelectedUserRoleId для хранения ... ну ... выбранного значения идентификатора UserRole.

Заполните SelectList, а затем в вашем представлении используйте:

@Html.DropDownListFor(x => x.SelectedUserRoleId, x.UserRole)

и вы должны быть в порядке.

См. также http://msdn.microsoft.com/en-us/library/system.web.mvc.selectlist (v = vs.108) .aspx .

5
ответ дан Roy Dictus 31 August 2018 в 18:24
поделиться
  @Html.DropDownList("ddl",Model.Select(item => new SelectListItem
{
    Value = item.RecordID.ToString(),
    Text = item.Name.ToString(),
     Selected = "select" == item.RecordID.ToString()
}))
25
ответ дан Timigen 31 August 2018 в 18:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: