如何访问当前控制器名称在我的Razor视图jquery
how to access the current controller name inside my Razor view jquery
我有以下脚本,这是在多个视图中使用:-
$("#ChoiceTag, #ChoiceName").each(function () {
$(this).change(function () {
if ($("#ChoiceName").prop("checked")) {
$.getJSON("@Url.Content("~/Firewall/LoadCSName")",
function (CSData) {
var select = $("#GeneralCSID");
select.empty();
select.append($('<option/>', {
value: "",
text: "Select Name..."
}));
$.each(CSData, function (index, itemData) {
select.append($('<option/>', {
value: itemData.Value,
text: itemData.Text
}));
select.val('@Model.CSIT360ID');
});
});
}
脚本对于所有视图都是完全相同的,除了下面语句中的控制器名:-
$.getJSON("@Url.Content("~/Firewall/LoadCSName")",
所以我希望移动上面的脚本并将其添加到一个单独的。js文件中,然后引用这个脚本,但我有以下两个问题:-
如果我将脚本移动到脚本文件夹,我需要动态引用当前控制器名称来构建URL,所以这是可能的
我仍然可以引用viewbag,因为我目前正在做…由于
如果你把Javascript移到外部文件中,你就不能使用Razor语法了。因此,@Url.Content("~/Firewall/LoadCSName")
不能解析
要克服这个问题,请将此添加到视图
<script type="text/javascript"> var AppPath = '@Url.Content("~/")'</script>
并在脚本中引用它,像这样
$.getJSON(AppPath + "Controller/Action")
关于viewbag。只要把viewbags的值放在如上所示的变量中,你的外部文件就可以引用它。
希望有帮助
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<script type="text/javascript">
var AppPath = '@Url.Content("~/")';
var SomeValue = '@Model.CSIT360ID';
var ControllerName = "Firewall/LoadCSName";
</script>
<!--Move this to an external File-->
<script type="text/javascript">
$("#ChoiceTag, #ChoiceName").each(function () {
$(this).change(function() {
if ($("#ChoiceName").prop("checked")) {
$.getJSON(AppPath + ViewBagValue), function(CSData) {
var select = $("#GeneralCSID");
select.empty();
select.append($('<option/>', {
value: "",
text: "Select Name..."
}));
$.each(CSData, function(index, itemData) {
select.append($('<option/>', {
value: itemData.Value,
text: itemData.Text
}));
select.val(SomeValue);
});
//end each
});
}
});
</script>
</body>
</html>
更新2
这是你在url.content
中引用控制器的方式<script type="text/javascript">
var AppPath = '@Url.Content("~/" + HttpContext.Current.Request.RequestContext.RouteData.Values["controller"])'
</script>
您可以通过以下方式获取控制器名称:
@{
string controllerName = HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString();
}
从视图中使用
访问控制器名称@{
ViewContext.RouteData.Values["controller"].ToString();
}
要访问控制器实例,可以使用如下命令
@{
(HomeController)ViewContext.Controller
}
让JS可以访问当前控制器名的一种方法是将其写入布局中的全局或命名空间变量赋值中。
<script>
var app = window.app || {}
app.currentController = "@HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString().toLower()";
</script>
或者,我工作的一种常用方法是将当前控制器和动作的类名添加到body标记中,以帮助在任何javascript中基于DOM的路由。
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 可以't让我的if语句处理js中的html表单输入
- 我的单元测试选项是什么
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 我的职位回报太快了,如何做出承诺
- 我的jQuery插件参数没有正确启动,遇到了问题
- 如何识别我的网站中的慢速设备
- 如何将JSON数据导入我的ejs模板
- JQuery添加元素需要在我的js之前再次添加JQuery脚本
- 知道为什么我的旋转木马不会自动更改图片吗
- 我的模板未被解析
- 无法将数据从firebase获取到我的html页面
- 角度图表;t显示在我的页面中
- 我的AngularJS表达式没有'不起作用
- 将电视直播频道从网站嵌入我的网站
- /undefined在我的404错误日志中多次出现
- 什么's在我的脚本标签之间有Razor
- 如何访问当前控制器名称在我的Razor视图jquery
- 将控件标签更改为按钮以访问 Razor 视图中的“我的条款和条件”页
- 我的“数据”在哪里?Razor语法中的Ajax选项