没有给出与 'IHtmlHelper - DropDownListFor 的所需形式参数 'htmlAttributes' 相对应的参数
No argument was given that corresponds to the required formal parameter 'htmlAttributes' of 'IHtmlHelper - DropDownListFor
我遇到了一个目前尚未解决的问题,而且我真的找不到任何答案。
当我尝试构建下拉列表时出现的错误是:
No argument was given that corresponds to the required formal parameter 'htmlAttributes'
of 'IHtmlHelper<ContactUsPageModel>.DropDownListFor<TResult>(Expression<Func<ContactUsPageModel, TResult>>, IEnumerable<SelectListItem>, string, object)'
我的剃须刀视图页面 ContactUs.cshtml 中的代码具有以下结构:
@Html.DropDownListFor(model => model.Provincia, PoblacionesExtensions.ToSelectList(ViewBag.locations), new{@class="form-control form-control-login font-weight-bold", @style="padding:0"} )
在查看任务中,我正在使用 GetCurrentLocation()
函数获取我需要的所有省份,以便显示到我的下拉列表中。
我将所有位置传递给 ViewBag var.
我的Controller的代码是这样的:
[AllowAnonymous]
public async Task<IActionResult> ContactUs()
{
var data = new ContactUsPageModel();
var user = await userSessionVars.GetCurrentUser();
var locationsVar = await userSessionVars.GetCurrentLocation();
ViewBag.locations = locationsVar;
if (user != null)
{
data = new ContactUsPageModel()
{
Name = $"{user.Nombre} {user.Ape1} {user.Ape2}",
Phone = user.UserName,
Email = user.Email,
};
}
return View(data);
}
这个任务来自我的助手。它连接到实体的一项服务并获取我需要的所有位置。它发出请求,接收 JSON 然后反序列化它:
public async Task<List<string>> GetCurrentLocation(){
var ConsultaLocalidadesEsp = await ServiceEntityHub.ConsultaLocalidadesEsp();
var locations = JsonConvert.DeserializeObject<List<PoblacionDto>>(ConsultaLocalidadesEsp);
return locations.Select(x => x.provincia).ToList();
}
最后,我正在通过我制作的另一个 Helper 构建和 returning SelectList。它位于 /Helper/ 目录中。我 return 它到下拉列表 html 元素,在我的 View razor 页面中,我已经在问题的最顶部指出了这一点。
using Microsoft.AspNetCore.Mvc.Rendering;
using System.Collections.Generic;
using System.Linq;
namespace Asistencia.Helper
{
public static class PoblacionesExtensions
{
public static SelectList ToSelectList(this List<string> poblaciones )
{
if(!poblaciones.Contains("Selecciona tu provincia"))
{
poblaciones.Add("Selecciona tu provincia");
}
return new SelectList(poblaciones, "Selecciona tu provincia");
}
}
}
我终于找到了解决问题的方法。
我最后要做的是使用 IHtmlHelper DropDownList
而不是 DropDownListFor
.
我的剃须刀查看代码:
@Html.DropDownList("Provincia", PoblacionesExtensions.ToSelectList(ViewBag.locations), optionLabel: null, htmlAttributes: new{@class="form-control form-control-login font-weight-bold p-0"} )
我的控制器的代码,用于返回带有我应用的模型的视图。
[AllowAnonymous]
public async Task<IActionResult> ContactUs()
{
var data = new ContactUsPageModel();
var user = await userSessionVars.GetCurrentUser();
var locationsVar = await userSessionVars.GetCurrentLocation();
ViewBag.locations = locationsVar;
if (user != null)
{
data = new ContactUsPageModel()
{
Name = $"{user.Nombre} {user.Ape1} {user.Ape2}",
Phone = user.UserName,
Email = user.Email,
Provincia = locationsVar
};
}
return View(data);
}
这是我用来获取下拉列表位置的服务的任务。
我必须将最终接收到的位置变量显式声明为 List<string>
.
类型
public async Task<List<string>> GetCurrentLocation()
{
var ConsultaLocalidadesEsp = await ServiceEntityHub.ConsultaLocalidadesEsp();
var locations = JsonConvert.DeserializeObject<List<PoblacionDto>>(ConsultaLocalidadesEsp);
List<string> locationsFinal = locations.Select(x => x.provincia).Distinct().ToList();
return locationsFinal;
}
作为最后的观察,我认为最初的问题是 DropDownListFor IHtmlHelper 造成的问题,因此通过应用这种新方法它解决了我的问题。
我遇到了一个目前尚未解决的问题,而且我真的找不到任何答案。 当我尝试构建下拉列表时出现的错误是:
No argument was given that corresponds to the required formal parameter 'htmlAttributes'
of 'IHtmlHelper<ContactUsPageModel>.DropDownListFor<TResult>(Expression<Func<ContactUsPageModel, TResult>>, IEnumerable<SelectListItem>, string, object)'
我的剃须刀视图页面 ContactUs.cshtml 中的代码具有以下结构:
@Html.DropDownListFor(model => model.Provincia, PoblacionesExtensions.ToSelectList(ViewBag.locations), new{@class="form-control form-control-login font-weight-bold", @style="padding:0"} )
在查看任务中,我正在使用 GetCurrentLocation()
函数获取我需要的所有省份,以便显示到我的下拉列表中。
我将所有位置传递给 ViewBag var.
我的Controller的代码是这样的:
[AllowAnonymous]
public async Task<IActionResult> ContactUs()
{
var data = new ContactUsPageModel();
var user = await userSessionVars.GetCurrentUser();
var locationsVar = await userSessionVars.GetCurrentLocation();
ViewBag.locations = locationsVar;
if (user != null)
{
data = new ContactUsPageModel()
{
Name = $"{user.Nombre} {user.Ape1} {user.Ape2}",
Phone = user.UserName,
Email = user.Email,
};
}
return View(data);
}
这个任务来自我的助手。它连接到实体的一项服务并获取我需要的所有位置。它发出请求,接收 JSON 然后反序列化它:
public async Task<List<string>> GetCurrentLocation(){
var ConsultaLocalidadesEsp = await ServiceEntityHub.ConsultaLocalidadesEsp();
var locations = JsonConvert.DeserializeObject<List<PoblacionDto>>(ConsultaLocalidadesEsp);
return locations.Select(x => x.provincia).ToList();
}
最后,我正在通过我制作的另一个 Helper 构建和 returning SelectList。它位于 /Helper/ 目录中。我 return 它到下拉列表 html 元素,在我的 View razor 页面中,我已经在问题的最顶部指出了这一点。
using Microsoft.AspNetCore.Mvc.Rendering;
using System.Collections.Generic;
using System.Linq;
namespace Asistencia.Helper
{
public static class PoblacionesExtensions
{
public static SelectList ToSelectList(this List<string> poblaciones )
{
if(!poblaciones.Contains("Selecciona tu provincia"))
{
poblaciones.Add("Selecciona tu provincia");
}
return new SelectList(poblaciones, "Selecciona tu provincia");
}
}
}
我终于找到了解决问题的方法。
我最后要做的是使用 IHtmlHelper DropDownList
而不是 DropDownListFor
.
我的剃须刀查看代码:
@Html.DropDownList("Provincia", PoblacionesExtensions.ToSelectList(ViewBag.locations), optionLabel: null, htmlAttributes: new{@class="form-control form-control-login font-weight-bold p-0"} )
我的控制器的代码,用于返回带有我应用的模型的视图。
[AllowAnonymous]
public async Task<IActionResult> ContactUs()
{
var data = new ContactUsPageModel();
var user = await userSessionVars.GetCurrentUser();
var locationsVar = await userSessionVars.GetCurrentLocation();
ViewBag.locations = locationsVar;
if (user != null)
{
data = new ContactUsPageModel()
{
Name = $"{user.Nombre} {user.Ape1} {user.Ape2}",
Phone = user.UserName,
Email = user.Email,
Provincia = locationsVar
};
}
return View(data);
}
这是我用来获取下拉列表位置的服务的任务。
我必须将最终接收到的位置变量显式声明为 List<string>
.
public async Task<List<string>> GetCurrentLocation()
{
var ConsultaLocalidadesEsp = await ServiceEntityHub.ConsultaLocalidadesEsp();
var locations = JsonConvert.DeserializeObject<List<PoblacionDto>>(ConsultaLocalidadesEsp);
List<string> locationsFinal = locations.Select(x => x.provincia).Distinct().ToList();
return locationsFinal;
}
作为最后的观察,我认为最初的问题是 DropDownListFor IHtmlHelper 造成的问题,因此通过应用这种新方法它解决了我的问题。