私のデータを含むXMLファイルがあり、ドロップダウンリストからこのXMLに文字列を選択したいと思います。コントローラでDropDownListから文字列を取得
@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 ActionResult Pridat()
{
ViewBag.Team = new SelectList(repo.GetTeams(), "Name", "Name");
return View();
}
[HttpPost]
public ActionResult Pridat(MatchXML match, string Team)
{
if (ModelState.IsValid)
{
try
{
ViewBag.Team = new SelectList(repo.GetTeams(), "Name", "Name");
match.Team = repo.GetTeamByName(Team);
repo.AddMatch(match);
return RedirectToAction("Index");
}
catch (Exception ex)
{
//error msg for failed insert in XML file
ModelState.AddModelError("", "Error creating record. " + ex.Message);
}
}
return View(match);
}
モデルが見えます:
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; }
}
私はこれを行うには、いくつかの変更を行いますしようとしていたが、それは動作していません。私はTeamIDとIDを保存することでそれを行うことができますが、私はXMLの保存文字列(チームの名前)にしたいです。ヘルプありがとう
編集: コントローラの表示コードと表示方法を更新しました。
質問はここで何ですか?何がうまくいかないの?ドロップダウンが正しく表示されませんか?あなたはそれからテキストの価値を得る方法を知らないのですか?そうであれば、Teamという名前の文字列引数をアクションに追加します。 – rouen
DropDownは正しくレンダリングされていますが、実際に値を取得する方法はわかりません。文字列引数で試してみましたが、うまくいきません。私はエラーが表示されます:キー 'チーム'を持つタイプ 'IEnumerable'のViewDataアイテムはありません。 –
フォームとポストアクションがありますか?あなたが何をしようとしているのか、何が動いていないのかははっきりしていません。 – jrummell