ちょっと、私はMVC2のヘルプデスクで作業しています。私のビューからViewModelsにデータが転送されないという問題があります。ViewModelでデータが転送されないのはなぜですか?
ホームページには、問題のある地域を選択できる3つのDropDownListsがあります。その後、ボタンを押して問題を報告するか、FAQに移動します。 DropDownListsで問題のある領域を選択した場合、サイトはviewmodelでデータ転送を行うことで選択した内容を覚えておく必要があります。
ホームインデックスのPostメソッドを取得すると、SelectListsとSelectListItemsはnullになりますが、ボタン情報を格納する文字列には正しいデータが含まれています。
私は間違っていますか?
これは私のホームコントローラです:
public ActionResult Index()
{
var viewModel = new HomeIndexViewModel()
{
// The lists with problem areas are populated.
problemAreas1 = new SelectList(helpDeskRepository.GetProblemAreas(), "ProblemAreaID", "ProblemAreaName"),
problemAreas2 = new SelectList(helpDeskRepository.GetProblemAreas(), "ProblemAreaID", "ProblemAreaName"),
problemAreas3 = new SelectList(helpDeskRepository.GetProblemAreas(), "ProblemAreaID", "ProblemAreaName")
};
return View(viewModel);
}
//
// POST: /Home/
[HttpPost]
public ActionResult Index(HomeIndexViewModel viewModel)
{
// snip
}
私のviewmodel:
public class HomeIndexViewModel
{
// A SelectList containing elements for the DropDownLists in the Home "Index" view.
public SelectList problemAreas1 { get; set; }
public SelectList problemAreas2 { get; set; }
public SelectList problemAreas3 { get; set; }
// Items chosen in the DropDownLists.
public SelectListItem itemOne { get; set; }
public SelectListItem itemTwo { get; set; }
public SelectListItem itemThree { get; set; }
// String for IDing what button is pressed.
public string submitButton { get; set; }
}
そしてHomeIndexViewModelから継承私の家インデックスビュー(それは、ねじアップするので、私はコードが含まれていませんでしたポスト):
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<% using (Html.BeginForm("Index", "Home", FormMethod.Post))
{%>
<h2>
Search for your problem:</h2>
<asp:Label ID="Label1" runat="server" Width="300px">
Choose a problem area, and search for an answer to your problem in the FAQ,
or you can press the report button to report your problem.</asp:Label>
<%-- Here are the DropDownLists. --%>
<p style="width: 220px; height: 24px;">
<%: Html.DropDownListFor(model => Model.itemOne, Model.problemAreas1, "Choose a problem area")%>
</p>
<p style="width: 220px;">
<%: Html.DropDownListFor(model => Model.itemTwo, Model.problemAreas2, "Choose a problem area")%>
</p>
<p style="width: 220px">
<%: Html.DropDownListFor(model => Model.itemThree, Model.problemAreas3, "Choose a problem area")%>
</p>
<p>
<%-- Here are the two buttons allowing people to do a search or create a new ticket respectively. --%>
<input type="submit" value="Search for problems" name="submitButton" id="searchButton" />
<input type="submit" value="Report problem" name="submitButton" id="submitButton" />
</p>
<%} %>
ありがとうございました。 :-)
ええ、それは私が逃したものです。文字列値、Int値、Guid値、またはいずれかの値の種類。 –
DropDownListForをDropDownListForに変更する前に、それがあったのです。文字列を使用してボタンを押してFAQを検索すると(リストの設定は私の家のインデックスビューと同じです)、この例外が発生します: キー 'itemOne'を持つViewDataアイテムは 'System'タイプです。文字列 'である必要がありますが、' IEnumerable '型である必要があります。 私はまず、それらをSelectListItemsに変更しました。 –
KasMA1990
待ち伏せ。私はFAQコントローラにDropDownListsを設定していませんでした。助けてくれてありがとう、それは今働いている。 :-) – KasMA1990