Как я могу связать DropDownList с формой Ajax как с post, так и с поддержкой? - PullRequest
0 голосов
/ 02 января 2012

У меня есть форма регистрации для регистрации личных атрибутов. Я использую обе функции Ajax.BeginForm, а также JSON для сериализации формы. Эта форма обновляет атрибуты, а также показывает атрибуты, если они доступны в БД. Поэтому, если пользователь вводит значения и нажимает кнопку «Сохранить», он сериализует форму и сохраняет ее в БД. Когда пользователь заходит на страницу; он также использует JSON для заполнения формы из БД, если есть доступная запись, а не просто показывает пустую форму, как обычно.

Пожалуйста, найдите часть вида ниже.

@using (Ajax.BeginForm(
    "savepeople", 
    "people", 
    FormMethod.Post, 
    new AjaxOptions { OnComplete = "savePicture" }, 
    new { id = "frPeople" }))
{
    @Html.ValidationSummary(true, "Problem during saving...")
      <fr>
    <h2>
        Personal Details</h2>
    <br />
        <legend>Person</legend>
        <div class="editor-label">
            @Html.LabelFor(model => model.People.Title)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.People.Title)
            @Html.ValidationMessageFor(model => model.People.Title)
        </div>
    <div class="editor-label">
        @Html.LabelFor(model => model.People.Description)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.People.Description)
        @Html.ValidationMessageFor(model => model.People.Description)
    </div>

        <p>
            <input id="saveMarker" type="submit" value="Save" />
        </p>
}

Поэтому я использую такую ​​модель:

namespace MyProject.Models
{
    public class Profile
    {
        public People People { get; set; }
// I am also referencing other models here...
    }

    public partial class People
    {
        public int PeopleId { get; set; }
        public Guid UserId { get; set; }

        public string Title { get; set; }
        public string Description { get; set; }
// It has other attributes also...
}

И контроллер имеет классическую функцию post и get, совместимую с JSON, для вызова и обновления страницы.

Моя проблема: я уже могу обрабатывать эти операции с TextBox, но я хочу добавить предопределенный DropDownList, чтобы использовать его как для сохранения / обновления, так и для отображения значений, если он имеет сохраненная запись в дБ.

У вас есть идеи о том, как справиться с этой проблемой?

1 Ответ

1 голос
/ 02 января 2012

Этот ответ довольно хорошо объясняет, как использовать DropDownLists: Создать выпадающий список для MVC3 с использованием Entity Framework (модель .edmx) и Razor Views && Вставить запись базы данных в несколько таблиц

Если вам нужны данные словаря для DropDownList, вы можете создать ViewModel, которая может содержать ваш PeopleClass и коллекцию словарей для выпадающего списка, например:

public class EmployeeAddViewModel
{
    public People people { get; set; }
    public Dictionary<int, string> dropdownValues { get; set; }
}

, или вы можете назначить коллекцию переменной ViewBag,Попробуйте прочитать приведенные выше вопросы и ответы, и если вы столкнетесь с определенной проблемой, не стесняйтесь спрашивать :)

...