0

単純な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>
4

1 に答える 1

-1

私は自分でこれを行いました -誰かが興味を持っているかコメントがある場合 、結果はhttps://github.com/gabrielgreen/Todos.Mvcにあります。

私はかなりの努力をしましたが、それが正しかったかどうかを示すフィードバックをいただければ幸いです。

于 2012-12-07T09:16:54.590 に答える