繁体   English   中英

ASP.NET MVC下拉列表不会填充结果

[英]ASP.NET MVC Dropdown List won't populate Results

好的,所以我花了很多时间试图弄清楚如何对过滤器进行下拉。 现在,我有两个过滤器作为文本框,但是我想要一个下拉列表,因为我将添加更多过滤器。

这是我的索引页:

任务列表

<ul>
<% using (Html.BeginForm("Index", "Task"))
   {%>
    <fieldset> 
        <legend>Filters</legend> 
        Date Range: From
        <%: Html.TextBox("StartDT") %> 
        To
        <%: Html.TextBox("EndDT") %> <br />
        <%: Html.DropDownList("ClientName", "PhysicianName") %> 

    <input type="submit" name="Filter" value="Filter" /> 
    <input type="submit" name="ClearFilter" value="Clear Filter" /> 
    </fieldset> 
<% } %>
</ul> 

这是我在模型中所做的更改:

    public class FilterViewModel
    {
        public PapClientProfile Client { get; set; }
        public PapStaff Physician { get; set; }
        public IEnumerable<SelectListItem> ClientName { get; set; }
        public IEnumerable<SelectListItem> PhysicianName { get; set; }
    }

这是我所做的更改:

    [AcceptVerbs(HttpVerbs.Get)]
    public ViewResult Edit()
    {
        var model = new FilterViewModel { PossibleValues = PapClientProfile("ClientName"), PapStaff ("PhysicianName") };
    }

但是我无法填充任何下拉列表值。 有人可以帮忙吗?

谢谢

尝试这样:

[HttpGet]
public ActionResult Edit()
{
    var model = new FilterViewModel 
    { 
        PossibleValues = new[]
        {
            new SelectListItem { Value = "1", Text = "value 1" },
            new SelectListItem { Value = "2", Text = "value 2" },
            new SelectListItem { Value = "3", Text = "value 3" },
        }
    };
    return View(model);
}

然后在您的强类型视图中:

<%: Html.DropDownListFor(
    x => x.Physician.PhysicianName, 
    new SelectList(Model.PossibleValues, "Value", "Text")
) %> 

我不知道您的类PapClientProfile和PapStaff,所以我用简单的字符串类型替换了它们。 假设您的ViewModel定义如下:

 
    public class FilterViewModel
    {
        public string ClientName { get; set; }
        public string PhysicianName { get; set; }
        public IEnumerable ClientNames { get; set; }
        public IEnumerable PhysicianNames { get; set; }
    }

然后,您将在视图中获得两个列表。 一个包含ClientNames,另一个包含PhysicianNames。 我认为这对您来说正确吗?

您的控制器代码如下:

[HttpGet]
public ActionResult Edit()
{
    var model = new FilterViewModel 
    { 
        Client = "ClientID-2",
        Physician = "",

        ClientName = new[]
        {
            new SelectListItem { Value = "ClientID-1", Text = "Client Name 1" },
            new SelectListItem { Value = "ClientID-2", Text = "Client Name 2" },
            new SelectListItem { Value = "ClientID-3", Text = "Client Name 3" },
        },

        PhysicianName = new[]
        {
            new SelectListItem { Value = "PhysicianID-1", Text = "Physician Name 1" },
            new SelectListItem { Value = "PhysicianID-2", Text = "Physician Name 2" },
            new SelectListItem { Value = "PhysicianID-3", Text = "Physician Name 3" },
        }

   };
    return View(model);
}

如果强烈键入视图以使FilterViewMode作为模型,则可以使用以下代码显示下拉列表:


<%: Html.DropDownListFor(
    x => x.ClientName, 
    new SelectList(Model.ClientNames, "Value", "Text")
) %>
<br/>
<%: Html.DropDownListFor(
    x => x.PhysicianName, 
    new SelectList(Model.PhysicianNames, "Value", "Text")
) %> 

我个人喜欢在控制器中创建SelectLists,但是无论哪种方法都可以。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM