如何使用post和get支持将DropDownList绑定到Ajax表单?

时间:2012-01-02 11:48:46

标签: json asp.net-mvc-3 drop-down-menu html.dropdownlistfor

我有一个注册表格,用于注册个人属性。我使用包含Ajax.BeginForm函数和JSON来序列化表单。此表单正在更新属性,并显示DB中可用的属性。因此,如果用户输入值并单击“保存”按钮,则会将表单序列化并将其保存到数据库中。当用户呼叫该页面时;如果有可用的记录,如果不是像往常一样显示一个空白表单,它也使用JSON来填充DB中的表单。

请查看以下视图的一部分。

@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...
}

控制器具有经典的帖子和获取与JSON兼容的功能来调用和更新页面。

我的问题是:我已经能够使用TextBox来处理这些操作了,但我想添加一个预定义的DropDownList来使用它来保存/更新并显示值,如果它在db中有保存的记录

您对如何处理此问题有任何想法吗?

1 个答案:

答案 0 :(得分:1)

这个答案解释了如何使用DropDownLists: Create a Dropdown List for MVC3 using Entity Framework (.edmx Model) & Razor Views && Insert A Database Record to Multiple Tables

如果你需要DropDownList的一些字典数据,你可以创建一个可以包含你的PeopleClass的ViewModel和下拉列表的字典集合,如:

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

或者您可以将集合分配给ViewBag变量。试着阅读上面链接的Q&amp; A,如果你偶然发现一个问题,请随时问:)