【发布时间】:2016-07-03 07:49:07
【问题描述】:
型号
League 和LeagueDivision 是两个模型类
public class League
{
public int Id { get; set; }
public string League1 { get; set; }
public string Icon { get; set; }
public virtual ICollection<LeagueDivision> LeagueDivisions { get; set; }
}
public class LeagueDivision
{
public int Id { get; set; }
public Nullable<int> LeagueId { get; set; }
public string Name { get; set; }
public string Icon { get; set; }
public virtual League League { get; set; }
}
public class ViewModelForHostBooster
{
[Required(ErrorMessage = "Please enter price")]
[Display(Name = "Price")]
public decimal Price { get; set; }
[Required(ErrorMessage = "Please select a league")]
[Display(Name = "League")]
public int? SelectedLeague { get; set; }
[Required(ErrorMessage = "Please select a league division")]
[Display(Name = "League Division")]
public int? SelectedLeagueDivision { get; set; }
public SelectList LeagueList { get; set; }
public SelectList LeagueDivisionList { get; set; }
}
控制器
在IndexDropdown 操作中,我只是用模型填充视图并验证是否
验证模型然后填充视图,否则返回视图。在FetchLeagueDivision 操作中,我根据传递的参数 ID 选择模型类的 Id 和 Name 属性。
谁能指导我为什么在我运行这段代码时会出现WebHttpException?这是异常Http Exception Image的链接
public class DropDownController : Controller
{
[HttpGet]
public ActionResult IndexDropDown()
{
ViewModelForHostBooster model = new ViewModelForHostBooster();
ConfigureViewModel(model);
return View(model);
}
[HttpPost]
public ActionResult IndexDropDown(ViewModelForHostBooster model)
{
if (!ModelState.IsValid)
{
ConfigureViewModel(model);
return View(model);
}
// save and redirect
return RedirectToAction("Somewhere");
}
private void ConfigureViewModel(ViewModelForHostBooster model)
{
HostBoostersDBEntities db = new HostBoostersDBEntities();
var leagues = db.Leagues.Select(x => new { Value = x.Id, Text = x.League1 }).ToList();
model.LeagueList = new SelectList(leagues, "Id", "League1");
if (model.SelectedLeague.HasValue)
{
IEnumerable<LeagueDivision> leaguedivisions = db.LeagueDivisions.Where(l => l.LeagueId == model.SelectedLeague.Value);
model.LeagueDivisionList = new SelectList(leaguedivisions, "Id", "Name");
}
else
{
model.LeagueDivisionList = new SelectList(Enumerable.Empty<SelectListItem>());
}
}
}
查看
@model HostBooster.Models.ViewModelForHostBooster
@using (Html.BeginForm())
{
<div>
@Html.LabelFor(m => m.Price)
@Html.TextBoxFor(m => m.Price)
@Html.ValidationMessageFor(m => m.Price)
</div>
<div>
@Html.LabelFor(m => m.SelectedLeague)
这里发生异常 @Html.DropDownListFor(m => m.SelectedLeague, Model.LeagueList)
@Html.DropDownListFor(m => m.SelectedLeague, Model.LeagueList)
@Html.ValidationMessageFor(m => m.SelectedLeague)
</div>
<div>
@Html.LabelFor(m => m.SelectedLeagueDivision)
@Html.DropDownListFor(m => m.SelectedLeagueDivision, Model.LeagueDivisionList)
@Html.ValidationMessageFor(m => m.SelectedLeagueDivision)
</div>
<input type="submit" value="save" />
}
【问题讨论】:
-
请更新 ViewModelForHostBooster。
-
@StephenMuecke imgur.com/gallery/EnRhw00/new 这是视图模型的定义。我正在尝试分享另一张异常图片,但 imgur 不允许我...我只分享一张图片并收到消息说我分享太快请等待 50 分钟
-
@StephenMuecke DataBinding: 'f__AnonymousType0`2[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version= 4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089]]' 不包含名为“Id”的属性。这是浏览器中的错误消息
-
@StephenMuecke 异常发生在第 (59) 行 第 57 行:第 58 行:@Html.LabelFor(m => m.SelectedLeague) 第 59 行:@Html.DropDownListFor(m => m.SelectedLeague, Model.LeagueList) 第 60 行:@Html.ValidationMessageFor(m => m.SelectedLeague) 第 61 行:
-
@StephenMuecke 亲爱的,对不起,我无法理解您的评论“它需要出现在您的问题中(不接受与问题相关的代码图像链接)”
标签: c# asp.net asp.net-mvc razor drop-down-menu