1

私はasp.net MVCでRazorを使用したことがないので、それがどのように機能するのか本当にわかりません。コントローラーで関数にタグを付けるたびに、jquery ajaxを使用し、非常にJavaScriptコードを記述し、私のプロジェクトは非常に面倒です。今、私は何か違うものを作りたいと思っています。

モデルエンティティを使用して、Sql Server DatabaseHomeControllerからデータを取得する場所として名前が付けられたコントローラーがあります。

public class HomeController : Controller
{
    public JsonResult getClasses()
    {
        IList<Class> classes = (from x in db.Class select x).Distinct().ToList();
        return Json(classes, JsonRequestBehavior.AllowGet);
    }
    public JsonResult getTypes(string className)
    {
        IList<String> allTypes = (from type in db.Type
                                  where type.class_name == className
                                  orderby type.type_name
                                  select type.type_name).Distinct().ToList();
       return Json(allTypes, JsonRequestBehavior.AllowGet);
    }

}

そして、 jquery ajaxを介してこのデータを取得するmaster.page (SiteMaster という名前)があります。

<body>
 <div id="header">
   <ul class="classesName"></ul>
 </div>
</body>

<script type="text/javascript">
$(document).ready(function () {
        $.ajax({
            url: "/Home/getClasses",
            type: "GET",
            data: {},
            success: function (result) {
                for (n = 0; n < result.length; n++) {
                    $('.classesName').append('<li><a href="#" onclick="showTypes( \'' + result[n].class_name + '\')" >' + result[n].class_name + '</a></li>');
                }
            }
        });
</script>

一部のクラスがクリックされたときにタイプを取得するための別のajaxがあります..しかし、これをすべて変更して、@Razorを使用できるようにします。

私が望むのはgetClasses()masterPageからのデータを表示し、一部のクラスがクリックされたときに、その引数をjavascriptを使用getTypes(string className)ずに@Razorに送信することだけです。だから私の質問は、これを行うことができ、どのように行うことができますか?

4

2 に答える 2

1

最初のマスター ページを読み込むために ajax を使用する必要はありません。表示する必要があるすべてのクラス データを含むビューを返すだけで、サーバーへの余分な移動を節約できます。Ajax を使用して Razor でそれを行うのに理想的な場所であるクラスがクリックされたときにデータを取得する場合は、多くの @Ajax.xxx ヘルパー (@Ajax.RawActionLink、@Ajax.BeginForm など) のいずれかを使用します。 . 次のリンクは、asp.net MVCビュー チュートリアルでビューがどのように使用されているかを調べるのに適した場所です。

于 2013-05-25T13:03:15.780 に答える