0

アプリケーションでAjaxを使用して、Webページを更新せずにビューを更新しています。

部分的なビューを黄色で強調表示しているので、ここhttp://contoso2.azurewebsites.net/Test/DoTestに気付くことができますか。

しかし、問題は、アイテムにデータを入力するとき(数学の問題)、Ajaxが要求しているときに、モデルの変更が表示されないことです。

    public ActionResult DoTest()
    {
        List<Worksheet> worksheets = null;

        if (Request.IsAjaxRequest())
        {
            worksheets = Session["Worksheets"] as List<Worksheet>;
            return PartialView("_Problems", worksheets[1]);
        }

        worksheets = new List<Worksheet>()
        {
            new Worksheet("Addition and Subtraction of absolute values", new List<Problem1>() { ... }),
            new Worksheet("Addition and Subtraction of absolute values", new List<Problem1>() { ... })
        }

        Session["Worksheets"] = worksheets;
        return View(worksheets[0]);
    }

モデルを回復するためにを使用してSessionいますが、モデルをデバッグしても、モデルの変更は表示されません。続行ボタンを押すと、モデルが更新されます。

編集:これには、かみそりのビューで私のAJAXが含まれています

@using (Ajax.BeginForm(
    new AjaxOptions
    {
        HttpMethod = "get",
        InsertionMode = InsertionMode.Replace,
        UpdateTargetId = "problemList"
    }))
{
    <input type="submit" value="Continue" />
}
4

1 に答える 1

2

通常、 View には 2 つの Action があります。これは必須要件ではありませんが。

で装飾された最初のアクションHttpGetは、ユーザーが初めてページにアクセスしたときに Get でページをレンダリングします。2 番目のアクションは、ユーザーが [次へ] をクリックしてフォームを投稿すると呼び出されます。

public class TestController {

   [HttpGet]
   public void DoTest(){

        var viewModel = new List<Worksheet>()
        {
            new Worksheet("Addition and Subtraction of absolute values", new List<Problem1>() { ... }),
            new Worksheet("Addition and Subtraction of absolute values", new List<Problem1>() { ... })
        };
        return View(viewModel);
    }

   [HttpPost]
   public void DoTest(List<Worksheet> worksheets){

        //do whatever you want with the user response

        var response =  worksheets[1]; 
        PartialView("_Problems",responseModel);
    }
}

注: で ajax 呼び出しを呼び出す必要がありますHttpMethod = "post"。ASP.NET の ModelBinder は、リクエストでポストされた値を responseModel にバインドします。worksheets

http://asp.net/で入手できる「getting-started-with-aspnet-mvc4」チュートリアルを試してみてください。

于 2013-01-03T19:15:22.353 に答える