単純なMVC4todoリストアプリケーションをAJAXに変換するにはどうすればよいですか?
理想的な答えは、この例をAJAXに正常に変換するための手順を教えてくれるでしょう。
注:ASP.NET MVCアーキテクチャがAJAXをどのようにサポートしているかを理解するほど、AJAXチュートリアルは必要ありません。
@Html.EditorFor(model => model.TodoItemToCreate)
副次的な質問:ビューモデルがで設定されているのに、入力された値が返されるのはなぜthis.TodoItemToCreate = null
ですか?
モデル
public class TodosViewModel
{
List<string> todoItems;
public List<string> TodoItems
{
get { return this.todoItems ?? (todoItems = new List<string>()); }
}
[Display(Name="What do you need to do?")]
public string TodoItemToCreate { get; set; }
public bool AcceptTodoItem()
{
bool isThereAnItemToAccept = !string.IsNullOrWhiteSpace(this.TodoItemToCreate);
if (isThereAnItemToAccept)
{
this.TodoItems.Add(this.TodoItemToCreate);
this.TodoItemToCreate = null;
}
return isThereAnItemToAccept;
}
}
コントローラ
public class TodosController : Controller
{
public ActionResult Index()
{
return View(new TodosViewModel());
}
public ActionResult Create(TodosViewModel todosViewModel)
{
todosViewModel.AcceptTodoItem();
return View("Index", todosViewModel);
}
}
インデックスビュー
@model Programming.LearnWeb.Models.TodosViewModel
@{
ViewBag.Title = "Todos";
}
@using (Html.BeginForm("Create", "Todos"))
{
@Html.Partial("List")
@Html.LabelFor(model => model.TodoItemToCreate)
@Html.EditorFor(model => model.TodoItemToCreate)
<input type="submit" value="Create" />
}
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
リストビュー
@model Programming.LearnWeb.Models.TodosViewModel
@{ int i = 0; }
<table>
@foreach (var todoItem in Model.TodoItems)
{
<tr>
<td>
@Html.Hidden("TodoItems[" + i++ + "]", todoItem)
@todoItem
</td>
</tr>
}
</table>