0

私はデスクトップ開発者であり、C#を使用してASP.NET MVC3を自分で学んでいます(MVC4はまだ使用できません...)。このため、私はいくつかの小さなダミープロジェクトを一緒に叩いています。このプロジェクトでは、映画のカテゴリでDropDownListForを使用します(この例は誰もが知っていますか?)。しかし、このチュートリアルは速すぎたので、もっと簡単なことをしようとしています。

私のモデル:

public class MovieModel {

    public int SelectedCategorieID { get; set; }

    public List<CategorieModel> Categories { get; set; }

    public MovieModel() {
        this.SelectedCategorieID = 0;
        this.Categories = new List<CategorieModel>() {new CategorieModel {ID = 1,
            Name = "Drama"},
        new CategorieModel {ID = 2,
            Name = "Scifi"}};
    }
}

public class CategorieModel {
    public int ID { get; set; }
    public string Name { get; set; }
}

見る?とてもシンプルです。このモデルを使用できる強い型のビューがあります。

@model MvcDropDownList.Models.MovieModel (1st line of Index.cshtml).

ホームコントローラのデフォルトのアクションが呼び出されると、モデルがいっぱいになります。

    public ActionResult Index() {

        ViewBag.Message = "Welcome to ASP.NET MVC!";

        Models.MovieModel mm = new Models.MovieModel();

        return View(mm);
    }

ここまでは順調ですね。問題はありません。ここで、選択したカテゴリのIDを、目立たないajaxを使用して部分ビューでユーザーに表示したいと思います...動作しなかったため、さらに小さく始めました。今のところDrowpdownListを忘れてください。私が今持っているのはこのボタンだけです:

<input type="button" value="Minicart test" onclick="categoryChosen();" />

そしてこのdiv:

<div id="minicart">
    @Html.Partial("Information")
</div>

ミニカートのものは別のチュートリアルからのものです、お詫び申し上げます。気を散らさないでください。

このJavaScript:

function categoryChosen() {
    var url = "Home/CategoryChosen/" + "2";
    $.post(url, function (data) {
        debugger;
        $("#miniCart").html(data);
    });
}

それを機能させるための私の以前の試みから、2は確かに堅実です。結局、私はそれをもちろん可変にしたいと思っています...

これはこのアクションを呼び出します:

    [AcceptVerbs("POST")]
    public ActionResult CategoryChosen(string SelectedCategorieID) {

        ViewBag.messageString = "2";

        return PartialView("Information");

    }

うん、そしてあなたはそれを正しく見る。テスト用に2を挿入します。私が言ったように、それを機能させることができないからです。部分ビュー情報は次のようになります。

@{
    ViewBag.Title = "Information";
}

<h2>Information</h2>
<h2>You selected: @ViewBag.messageString</h2>

さて、大きな問題です。部分ビューがレンダリングされることを期待していました:「選択しました:2」。javascriptをデバッグして、変数「data」の内容を確認すると、これも表示されます。なぜそれが2をレンダリングしないのか誰かが私を助けることができますか?それから私は自分自身にこのことを教えることを続けることができます。よろしくお願いします。何か情報が足りない場合は、遠慮なくお問い合わせください。

4

2 に答える 2

1

問題は、ミニカート div の id のスペルミスだと思います。ID には大文字が含まれていませんが、セレクターには大文字が含まれています。したがって、代わりに $("#miniCart") $("#miniCart") を使用する必要があり、それが機能します。

于 2013-03-05T09:33:22.460 に答える
0

こんな感じで作って動作確認

function categoryChosen() {
    var url = "Home/CategoryChosen?SelectedCategorieID=" + "2";
    $.post(url, function (data) {
        debugger;
        $("#miniCart").html(data);
    });
}

これは、global.asax でルーターに変更を加えていないことを考慮して提供されます。

むしろ、このようにURLを追加する必要があります

URLヘルパー

于 2013-03-05T09:22:35.160 に答える