C#、.NET 3.5、およびMVCの新機能を少し理解しています。"GET"作成アクション中にドロップダウンリストに値を入力しようとするとエラーが発生する
私はMVC NerdDinner例を通じて実行しているとあなたがここのViewModelを見れば:http://nerddinnerbook.s3.amazonaws.com/Part6.htm#highlighter_662935
あなたは国のリストとどのようにそれが読み込まれますを見ることができ、これは正常に動作するようですが、私は同様の操作を行うことを試みましたLINQを使用して以下のものがあり、IEnumerableインターフェイスを継承していても、SelectListアプローチで問題が発生しています。
ステータステーブルへの外部キーを持つタスクテーブルがあります。以下のコードは、作成アクションでGETを実行すると、NullReferenceExceptionを返します。私は、匿名のタスクオブジェクトにはステータスが設定されていないことがわかります。だから、おそらくそれをチェックする必要がありますが、NerdDinnerの例ではこれがどのように行われていないのか分かりません。
public class TaskViewModel {
// Properties
public Task Task { get; private set; }
public SelectList Status { get; private set; }
// Constructor
public TaskViewModel(Task task) {
TaskRepository taskRepo = new TaskRepository();
Task = task;
Status = new SelectList(taskRepo.GetStatus(), Task.Status.description);
}
}
//
// GET: /Tasks/Create
public ActionResult Create()
{
Task task = new Task();
return View(new TaskViewModel(task));
}
//Code from TaskRepository
private TaskManagerDataContext db = new TaskManagerDataContext();
public IQueryable<Status> GetStatus() {
return from status in db.Status
orderby status.description
select status;
}
私はタイプのドロップダウンメニューと作品ドロップダウンの人口のためにLINQを使用して、別のアプローチをしましたが、私はポストが行われ、詳細ビューが返されたら、それは正しい値を選択したかどうかをテストするために、まだです。私はまた、私のレポジトリにこの種のことをやっているクラスを持っているのではなく、これがどうやって私のリポジトリに移されるべきかどうか疑問に思っていますか?ここで
はコードです:
//In TaskViewModel Class
public IEnumerable<SelectListItem> Types { get; private set; }
//In TaskViewModel constructor
IList<NPType> types = taskRepo.GetTypes().ToList();
Types =
from type in types
select new SelectListItem {
Selected = (type.typeId == task.typeId),
Text = type.description,
Value = type.typeId.ToString()
};
//The TaskForm partial View that is used for the Create action of the TaskController
<p>
<label for="type">type:</label>
<%= Html.DropDownList("Type", Model.Types)%>
<%= Html.ValidationMessage("type", "*") %>
</p>
<p>
<label for="status">status:</label>
<%= Html.DropDownList("Status", Model.Status)%>
<%= Html.ValidationMessage("status", "*") %>
</p>
とTaskFormビューには、タスクのコンストラクタには何がSystem.Web.Mvc.ViewUserControl
問題を解決できましたか?はいの場合、どうですか? –