我有一个注册表格,用于注册个人属性。我使用包含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中有保存的记录
您对如何处理此问题有任何想法吗?
答案 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,如果你偶然发现一个问题,请随时问:)