【发布时间】:2019-08-26 05:26:40
【问题描述】:
我的一个视图中的选择列表没有从视图模型中填充,我无法弄清楚。视图模型的其他部分按预期运行。如果重要的话,该视图是部分视图。
这是视图的代码:
@model Workout_Tracker.ViewModels.AddExerciseViewModel
<form >
<div class="individualContainer">
<label asp-for="ExerciseTypeID"></label>
<select asp-for="ExerciseTypeID" asp-items="Model.ExercisesTypes">
</select>
<label asp-for="Reps"></label>
<input type="number" asp-for="Reps" />
</div>
</form>
这是视图模型:
public class AddExerciseViewModel
{
[Display(Name ="Weight")]
[Required(ErrorMessage="You must enter a weight.")]
public int Weight { get; set; }
public int Reps { get; set; }
//this sets will be used to create the sets in the Exercise_Sets table
public int Sets { get; set; }
public int WorkoutID { get; set; }
public int ExerciseTypeID { get; set; }
public List<SelectListItem> ExercisesTypes { get; set; }
public AddExerciseViewModel(IEnumerable<ExerciseType> exercises) {
ExercisesTypes = new List<SelectListItem>();
foreach (ExerciseType ex in exercises)
{
ExercisesTypes.Add(new SelectListItem
{
Value = ex.ID.ToString(),
Text = ex.Name
});
}
}
public AddExerciseViewModel() {
}
}
这里是控制器:
public IActionResult WorkoutSelector() {
IList<ExerciseType> exerciseTypes = context.ExerciseTypes.ToList();
AddExerciseViewModel addExerciseViewModel1 = new AddExerciseViewModel(exerciseTypes);
return PartialView("_WorkoutSelector", addExerciseViewModel1);
}
这是ExerciseType类:
public class ExerciseType
{
public int ID { get; set; }
public string Name { get; set; }
}
【问题讨论】:
-
你正在传递
IEnumerable<ExerciseType>,ExerciseType 是一个整数,所以基本上,你传递了一个可枚举的数字并期望从中得到ID和Name?你能澄清一下吗? -
@Valkyrie 这被传递给构造函数以初始化
ExercisesTypes属性。它不一定会影响模型在视图中的可用性。 -
@rdev5 你读过我说的吗?
ExerciseType是模型本身的整数外观。如何从整数中获取 Id 和 Name? -
@Valkyrie 对不起,我还是没听懂你说的。听起来您将属性
AddExerciseViewModel.ExerciseType(不是类型)与该项目其他地方定义的ExerciseType类(确实定义了ID和Name属性)混淆了OP 包含在这些 sn-ps 中。此外,为什么有人会为int使用这样的不同名称而麻烦,这是没有道理的。当他们想要int类型时,OP 清楚地知道如何指定int(AddExerciseViewModel中有 5 个)。 -
他应该已经添加了足够的信息或有正确的命名。回答这些类型的问题还不够明确,这会产生更多问题。 Read This
标签: c# asp.net-mvc asp.net-core razor asp.net-mvc-viewmodel