gpt4 book ai didi

c# - 如何使用模型在 mvc 4 的局部 View 中绑定(bind)下拉列表?

转载 作者:太空狗 更新时间:2023-10-30 01:17:56 25 4
gpt4 key购买 nike

您好,我在 index.cshtml 页面中使用局部 View 。部分 View 包含一个从数据库动态绑定(bind)的下拉列表。

我不想使用 viewbag 或 viewdata 来绑定(bind)这个下拉列表。

在 Controller 中

    // GET: Reporting/Home
public ActionResult Index()
{
var view = View();

return view;
}

public ActionResult _ReportingMenu()
{
var DashboardList = GetAllDashboards();

return View(DashboardList);
}


public IEnumerable<DashboardDefinition> GetAllDashboards()
{
return _reortDefinitionService.GetAllDashboards();
}

在 index.cshtml 中

@model IEnumerable<Portal.Domain.ReportingModule.ReportDefinition.DashboardDefinition>

@{
ViewBag.Title = "Reporting";
Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>Reporting View</h2>
@Html.ActionLink("Add new Chart", "Create", "Chart", new { area = "Reporting" }, null)

@Html.Partial("_ReportingMenu")

在局部 View 中

    @model  Portal.Domain.ReportingModule.ReportDefinition.DashboardDefinition

<div class="nav navbar navbar-default navbar-no-margin submenu">

@Html.DropDownList("Mobiledropdown1",IEnumerable<Model.DashboardName>)

<a id="SubMenuIntegratorNew" class="btn btn-default submenu-item" href="#">
<i class="fa fa-file-o fa-lg"></i>
<span class="submenu-item-text">New</span>
</a>
<a id="SubMenuIntegratorSave" class="btn btn-default submenu-item" href="#">
<i class="fa fa-floppy-o fa-lg"></i>
<span class="submenu-item-text">Save</span>
</a>
<a id="SubMenuIntegratorSaveAs" class="btn btn-default submenu-item" href="#">
<i class="fa fa-files-o fa-lg"></i>
<span class="submenu-item-text">Save As</span>
</a>
<a id="SubMenuIntegratorAddChart" class="btn btn-default submenu-item" href="#">
<i class="fa fa-picture-o fa-lg"></i>
<span class="submenu-item-text">Add Chart</span>
</a>
</div>

但我收到空模型错误。

我不知道如何在局部 View 中实现

最佳答案

您应该使用 View 模型,这样您就可以在其中同时包含列表和选定的属性,例如:

public class DashboardViewModel
{
public IEnumerable<SelectListItem> Data { get; set; }
//Might not be an int, but just an example
public int SelectedId { get; set; }
}

然后将其填充到您的 Controller 中:

public ActionResult _ReportingMenu()
{
var DashboardList = GetAllDashboards();

var dropdownData = DashboardList
.Select(d => new SelectListItem
{
Text = d.Name, //Need to apply the correct text field here
Value = d.Id.ToString() //Need to apply the correct value field here
})
.ToList();

var model = new DashboardViewModel
{
Data = dropdownData
};

return View(model);
}

然后在你的两个 View 中,设置模型:

 @model DashboardViewModel

然后在你的部分你可以做:

 @Html.DropDownListFor(m => m.SelectedId, Model.Data)

关于c# - 如何使用模型在 mvc 4 的局部 View 中绑定(bind)下拉列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29816486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com