C# 从DropDownList获取字符串
我有一个包含我的数据的XML文件,我想从dropdownlist保存选择字符串到这个XML。 我认为:C# 从DropDownList获取字符串,c#,asp.net-mvc,asp.net-mvc-3,drop-down-menu,C#,Asp.net Mvc,Asp.net Mvc 3,Drop Down Menu,我有一个包含我的数据的XML文件,我想从dropdownlist保存选择字符串到这个XML。 我认为: @using (Html.BeginForm()) { @Html.ValidationSummary(true) <fieldset> <legend>MatchXML</legend> ... <div class="editor-label"> @Html.LabelFor(model => m
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>MatchXML</legend>
...
<div class="editor-label">
@Html.LabelFor(model => model.Team)
</div>
<div class="editor-field">
@Html.DropDownList("Team", (SelectList)ViewBag.Team, String.Empty)
@Html.ValidationMessageFor(model => model.Team)
</div>
...
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
模型外观:
public class MatchXML
{
public int MatchXMLID { get; set; }
public string Opponent { get; set; }
public DateTime MatchDate { get; set; }
public string Result { get; set; }
public Team Team { get; set; }
public int Round { get; set; }
}
public class Team
{
public int TeamID { get; set; }
public string Name { get; set; }
public virtual User Coach { get; set; }
public virtual ICollection<Player> Players { get; set; }
}
公共类匹配xml
{
公共int MatchXMLID{get;set;}
公共字符串对手{get;set;}
公共日期时间匹配日期{get;set;}
公共字符串结果{get;set;}
公共团队{get;set;}
公共整数轮{get;set;}
}
公开课小组
{
public int TeamID{get;set;}
公共字符串名称{get;set;}
公共虚拟用户Coach{get;set;}
公共虚拟ICollection播放器{get;set;}
}
我试图做一些修改来做到这一点,但它不工作。我可以使用TeamID和saving ID来完成,但我需要xml保存字符串(团队名称)。谢谢你的帮助
编辑:
我更新了控制器和视图方法的显示代码。您正在将下拉列表绑定到
团队
复杂属性(DropDownList帮助程序的第一个参数)。这没有道理。只能绑定到标量值。我还建议您使用帮助器的强类型版本:
@Html.DropDownListFor(x => x.Team.TeamID, (SelectList)ViewBag.Team, String.Empty)
这样,您将使用下拉列表中的选定值填充POST操作中的TeamID
属性
还应替换:
@Html.ValidationMessageFor(model => model.Team)
与:
这里的问题是什么?什么不起作用?您的下拉列表渲染不正确?或者您不知道如何从中获取文本值?如果是这样的话,您只需将名为Team的字符串参数添加到您的操作中。下拉列表可以正确呈现,但我真的不知道如何从中获取值。我用字符串参数试过了,但不起作用。我得到错误:没有具有键“Team”的类型为“IEnumerable”的ViewData项。是否有表单和post操作?不清楚您正在尝试执行什么操作以及哪些操作不起作用。我更新了代码示例,希望能有所帮助。尝试此操作时,发布时出现以下错误:具有键“Team.TeamID”的ViewData项的类型为“System.Int32”,但必须为“IEnumerable”。DDL已解决,但无法发布。
@Html.ValidationMessageFor(model => model.Team)
@Html.ValidationMessageFor(model => model.Team.TeamID)