我从不在asp.net MVC中使用Razor ,所以我真的不知道它是如何工作的。每次我想在我的控制器中标记一个函数时,我都会使用jquery ajax并且我编写了非常多的javascript代码并且我的项目非常混乱。现在我想做一些不同的事情。
我将控制器命名为HomeController
从Sql Server Database获取数据的位置,为此使用模型实体。
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);
}
}
我有 master.page (命名为 SiteMaster) ,我通过jquery ajax获取这些数据。
<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。
我想要的只是显示来自 masterPage 的数据getClasses()
,当单击某个Class时,将该参数发送到getTypes(string className)
但不使用javascript并使用 @Razor。所以我的问题是我可以这样做吗?怎么做?