是否可以显示另一个控制器的视图?
比方说,我有一个CategoriesController
和一个Category/NotFound.aspx
视图.在此期间CategoriesController
,我可以轻松回归View("NotFound")
.
现在说我有一个ProductsController
动作和视图来添加产品.但是,此操作要求我们有一个类别来添加产品.例如,Products/Add/?catid=10
.
如果我无法找到基于类别的类别catid
,我想NotFound
从类别控制器显示视图,而不是CategoryNotFound
在Products控制器下创建视图.
这是可能的还是我以错误的方式构建事物?有没有办法做到这一点?
我有一种形式可以延伸几页(可能不太理想,但就是这样).我希望在整个表单中有一个范围可以随着时间的推移填充,这样如果用户在步骤之间来回切换,则很容易记住状态.
所以我需要做非常伪代码:
$scope.val = <Some dynamic data>
$scope.val
应该仍然与最后一页上的值相同.以某种方式持久化数据范围是正确的方法,还是有其他方法?您是否可以创建一个在路由之间具有持久范围的控制器,当然除了将其保存在数据库中之外.
我正在关注Microsoft的这个ASP.NET MVC教程:
我的代码略有不同,我试图HttpContext.Request.IsAuthenticated
在控制器的构造函数中访问.
namespace SCE.Controllers.Application
{
public abstract class ApplicationController : Controller
{
public ApplicationController()
{
bool usuario = HttpContext.Request.IsAuthenticated;
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题是HttpContext
始终为空.
这个问题有方法解决吗?
我正从控制器重定向到另一个控制器.但我还需要将模型属性传递给第二个控制器.
我不想把模型放在会话中.
请帮忙.
如果我想currentUser()
为一些oauth的东西做一个函数我正在做的我可以在视图或控制器中使用它(想想rails,你helper_method: current_user
在应用程序控制器中做的事情).
我读到的所有内容都声明要创建一个帮助文件夹并在那里添加函数然后你可以这样做Helpers::functionName
这是否是正确的方法呢?
什么是创建辅助功能的"laravel方式",可以在刀片模板和控制器中使用?
我想在我的Rails应用程序中使用一些Javascript.
我想让我的索引页面允许我编辑索引页面上的各个项目,然后在编辑时重新加载索引页面.
我的index.html.erb页面如下所示:
<div id="index">
<%= render 'index' %>
</div>
Run Code Online (Sandbox Code Playgroud)
在我的index.js.erb中我有:
$('#index').html("<%=j render 'index' %>");
Run Code Online (Sandbox Code Playgroud)
在我的holder_controller中:
def edit
holder = Holder.find(params[:id])
end
def update
@holder = Holder.find(params[:id])
if @holder.update_attributes(params[:holder])
format.html { redirect_to holders_path } #, flash[:success] = "holder updated")
## ^---Line 28 in error
format.js
else
render 'edit'
end
end
Run Code Online (Sandbox Code Playgroud)
当我加载索引页面时,它很好.只要单击编辑按钮并提交表单,我就会得到以下信息:
但是,如果我返回并刷新索引页面,则会保存编辑内容.我究竟做错了什么?
我正在重写一个从silver-light到angularjs的大型应用程序,同时这样做,我意识到我的每个控制器js文件都跨越2000-3000行代码.我的所有代码都严重依赖于范围变量.想知道是否有机会将单个控制器js文件拆分成多个js文件?任何指针都会受到赞赏.
我记得你应该以一种特殊的方式命名你的控制器,模型和视图.无论是单数还是复数.我不记得哪些名称,但我在文档中找不到任何相关内容.
我猜它是这样的:
- 控制器是复数
- 意见是复数
- 模型是单数的
我在正确的轨道上吗?
我明白这只是一个约定,你不要有跟着他们,但我还是想知道正确的方法是什么.
在这个简化的场景中,我有两个文件:index.htm,lazy.htm.
index.htm的:
var myApp = angular.module('myApp', []);
myApp.controller('embed',function($scope){
$scope.embed = 'Embedded Controller';
});
<div ng-controller="embed">{{embed}}</div>
<div ng-include="'lazy.htm'"></div>
Run Code Online (Sandbox Code Playgroud)
lazy.htm
myApp.controller('lazy',function($scope){
$scope.lazy = 'Lazy Controller';
});
<div ng-controller="lazy">
{{lazy}}
</div>
Run Code Online (Sandbox Code Playgroud)
结果是一个错误:"Argument'lazy'不是函数,未定义"
改为使用函数
lazy.htm
function lazy($scope) {
$scope.lazy = 'Lazy Controller';
}
<div ng-controller="lazy">
{{lazy}}
</div>
Run Code Online (Sandbox Code Playgroud)
这可以使用到版本1.3 beta 14.在beta 15中删除了全局控制器功能:https://github.com/angular/angular.js/issues/8296
那么现在,动态获取lazy.htm的愤怒内容的更好方法是什么?
更新:
在本文(http://ify.io/lazy-loading-in-angularjs)中,我找到了另一种可能的解决方案.$ controllerProvider允许我们在角度引导之后注册新的控制器.奇迹般有效.在v1.3.0-beta.18中测试
index.htm的:
var myApp = angular.module('myApp', [])
.controller('embed',function($scope){
$scope.embed = 'Embedded Controller';
})
.config(function($controllerProvider) {
myApp.cp = $controllerProvider;
});
<div ng-controller="embed">{{embed}}</div>
<div ng-include="'lazy.htm'"></div> …
Run Code Online (Sandbox Code Playgroud) 我有一个带有多个控制器的页面,其中一个控制器正在同一页面中的2个不同的div中使用.我不确定它是否是范围问题,或者我只是错过了我的代码中的内容.
这里是plunkr http://plnkr.co/edit/IowesXE3ag6xOYfB6KrN?p=preview
我想在用户点击"优惠"链接时隐藏文本框,在点击"费用"链接时显示该框.
controllers ×10
angularjs ×4
asp.net-mvc ×2
javascript ×2
views ×2
asp.net ×1
blade ×1
helpers ×1
httpcontext ×1
jquery ×1
laravel ×1
laravel-5 ×1
lazy-loading ×1
models ×1
php ×1
redirect ×1
routes ×1
scope ×1
spring-mvc ×1