我试图显示一个下拉列表,用于使用从Controller传递数据到View页面的ViewBag,但是我收到以下错误:
最好的重载方法匹配' System.Web.Mvc.SelectList.SelectList(System.Collections.IEnumerable,string,string)'有一些无效的参数"
这是我的ViewModel:
public class CadastroCategoriaViewModel : ViewModelBase
{
#region Construtores
public CadastroCategoriaViewModel()
{
}
#endregion
#region Propriedades
/// <summary>
/// Perfil de usuário em cadastro ou edição.
/// </summary>
public CategoriaFinanceira CategoriaFinanceira { get; set; }
public bool eFilho { get; set; }
}
继承此模型:
public class CategoriaFinanceira
{
public int CategoriaFinanceiraID { get; set; }
[DisplayNameLocalizavel(NomeMensagensCategoriaFinanceira.Nome, typeof(MensagensCategoriaFinanceira))]
[ValidacaoCampoObrigatorio]
[ValidacaoTamanhoTexto(255, MinimumLength = 1)]
public string Nome { get; set; }
[DisplayNameLocalizavel(NomeMensagensCategoriaFinanceira.TipoPermiteLancamento, typeof(MensagensCategoriaFinanceira))]
[ValidacaoCampoObrigatorio]
public EnumTipoPermiteLancamento TipoPermiteLancamentoID { get; set; }
[ValidacaoCampoObrigatorio]
[Display(Name = "Tipo")]
public EnumTipoLancamento TipoLancamentoID { get; set; }
[ValidacaoCampoObrigatorio]
public int EmpresaID { get; set; }
//public virtual Empresa Empresa { get; set; }
public int? PaiCategoriaFinanceiraID { get; set; }
public virtual CategoriaFinanceira PaiCategoriaFinanceira { get; set; }
public virtual ICollection<CategoriaFinanceira> FilhosCategoriasFinanceiras { get; set; }
//public virtual CategoriaFinanceiraRelacao CategoriaFinanceiraRelacao { get; set; }
[DisplayNameLocalizavel(NomeMensagensCategoriaFinanceira.UsuarioIdCadastro, typeof(MensagensCategoriaFinanceira))]
[ValidacaoCampoObrigatorio]
public int CadastroUsuarioID { get; set; }
[DisplayNameLocalizavel(NomeMensagensCategoriaFinanceira.CadastroData, typeof(MensagensCategoriaFinanceira))]
[ValidacaoCampoObrigatorio]
public DateTime CadastroData { get; set; }
[DisplayNameLocalizavel(NomeMensagensCategoriaFinanceira.AtualizacaoUsuarioID, typeof(MensagensCategoriaFinanceira))]
public int? AtualizacaoUsuarioID { get; set; }
[DisplayNameLocalizavel(NomeMensagensCategoriaFinanceira.AtualizacaoData, typeof(MensagensCategoriaFinanceira))]
public DateTime? AtualizacaoData { get; set; }
[DisplayNameLocalizavel(NomeMensagensCategoriaFinanceira.InativacaoUsuarioID, typeof(MensagensCategoriaFinanceira))]
public int? InativacaoUsuarioID { get; set; }
[DisplayNameLocalizavel(NomeMensagensCategoriaFinanceira.InativacaoData, typeof(MensagensCategoriaFinanceira))]
public DateTime? InativacaoData { get; set; }
}
DropDownListFor我尝试使用
<section class="col col-6">
<label class="select">
@Html.DropDownListFor(model => model.CategoriaFinanceira.PaiCategoriaFinanceiraID, new SelectList(ViewBag.CategoriasPai, "CategoriaFinanceiraID", "Nome"))
<i></i>
</label>
</section>
我正在通过我的ViewBag:
public ActionResult CadastrarFilho()
{
Empresa empresa = new Empresa();
if (Session["Empresa"] != null)
{
empresa = ((Empresa)Session["Empresa"]);
}
var viewModel = new CadastroCategoriaViewModel();
viewModel.eFilho = true;
viewModel.CategoriaFinanceira = new CategoriaFinanceira();
ViewBag.CategoriasPai = _servicoAppGerenciadorCategoriaFinanceira.ListarPorEmpresa(TokenAcesso, empresa.EmpresaID);
return PartialView(viewModel);
}
有人可以给我一些线索或暗示吗?
答案 0 :(得分:0)
将选择列表中的数据从控制器传递到视图。如下所示 在ccontroller中
public ActionResult CadastrarFilho()
{
.
.
ViewBag.CategoriasPai = new SelectList(_servicoAppGerenciadorCategoriaFinanceira.ListarPorEmpresa(TokenAcesso, empresa.EmpresaID), "CategoriaFinanceiraID", "Nome");
return PartialView(viewModel);
}
并在视图中
@Html.DropDownListFor(model => model.CategoriaFinanceira.PaiCategoriaFinanceiraID, ViewBag.CategoriasPai as SelectList())
希望这会有所帮助