私は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に送信することだけです。だから私の質問は、これを行うことができ、どのように行うことができますか?