2

我在 MVC3 中有两个模型类,其中一个Services具有这些属性

public int ID { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public string Image { get; set; }
public int ChildOf { get; set; }

它还有一个 Entityframework 的数据库表

另一个模型Quata具有这些属性

public int ID { get; set; }
public string Sender_Name { get; set; }
public string Description { get; set; }
.....
......
public Services Service_ID { get; set; }

它还有一个 Entityframework 的数据库表

我想创建一个 Razor(C#) 视图 ( for Quata),用户可以在其中通过填写 html 表单发送 quata,但我想在其中显示一个下拉列表,其中Services ID包含下拉值下拉文本Services Name,该下拉文本也来自 Services DB 表。

我的问题是我应该如何创建该动态下拉列表@Html.DropDownListFor?并将从该下拉列表中选择的数据发送到控制器?

4

3 回答 3

2

试试这个

控制器:

 public ActionResult Create()
    {
        var Services = new Services();

        Services.Load(); //load services..

        ViewBag.ID = new SelectList(Services.ToList(), "Id", "Name");


        return View();
    }

[HttpPost]
public ActionResult Create(Quata Quata)
    {
        //save the data 
    }

强类型视图:(使用 Razor)

@model Quata

@using (Html.BeginForm()) {
<fieldset>
    <legend>Quata</legend>

    <div>
        @Html.LabelFor(model => model.Service_ID.ID, "Service")
    </div>
    <div>
        @Html.DropDownList("ID", String.Empty)
    </div>


    <p>
        <input type="submit" value="Create" />
    </p>
</fieldset>
}
于 2012-07-11T22:09:22.243 回答
0

看一眼@Html.DropDownListFor

于 2012-07-11T20:42:03.210 回答
0

所以说你的视图模型有一个所述服务的列表。

以下内容可能对您有用(您可能不需要 for 循环,编辑器应该消除它,但我遇到了一些奇怪的绑定问题)。

在您的顶级视图中,指向您的视图模型(@model Quata,假设 Quata 是您的视图模型)具有以下代码:

@For i = 0 To Model.DropdownListInput.Count - 1
                Dim iterator = i
                @Html.EditorFor(Function(x) x.DropdownListInput(iterator), "EnumInput")
        Next

在您的编辑器模板中(在视图文件夹下创建一个子文件夹,此下拉列表将在称为编辑器模板中,并根据您的需要命名模板,我的是 EnumInput)。

在您的编辑器模板中,它应该指向您的服务模型(@model 服务)具有类似于以下代码的内容(替换为您的适当变量名称):

@<div class="editor-label">
    @Html.LabelFor(Function(v) v.value, Model.DisplayName)
</div>
@<div class="editor-field">
    @Html.DropDownListFor(Function(v) v.value, New SelectList(Model.ParamEnums, "ValueForScript", "EnumValue"), "--Please Select A Value--")
    @Html.ValidationMessageFor(Function(v) v.value)
</div> 

用你的列表替换列表,用你的替换 lambda 值 (@Html.DropDownListFor(x => x.id, New SelectList(x.ServiceList, "ID", "Name"), "--请选择一个值-- “) 或类似的东西。

请注意,此代码是在 VB 中,但它应该提供一个粗略的指南。

于 2012-07-11T22:12:45.447 回答