返回ModelAndView的方式
@RequestMapping(value = "/list", method = RequestMethod.GET)
public ModelAndView list(
@UserAuth UserAuth user,
ModelAndView mav) {
if (!user.isAuthenticated()) {
mav.setViewName("redirect:http://www.test.com/login.jsp");
return mav;
}
mav.setViewName("list");
mav.addObject("articles", listService.getLists());
return mav;
}
Run Code Online (Sandbox Code Playgroud)
返回String的方式
@RequestMapping(value = "/list", method = RequestMethod.GET)
public String list(
@UserAuth UserAuth user,
Model model) {
if (!user.isAuthenticated()) {
return "redirect:http://www.test.com/login.jsp";
}
model.addAttribute("articles", listService.getLists());
return "list";
}
Run Code Online (Sandbox Code Playgroud)
这些工作相同.哪个更好?有什么区别?
我正在将控制器转换为更新的注释版本.在旧版本中,我曾使用以下命令在springmvc-servlet.xml中指定init方法:
<beans>
<bean id="myBean" class="..." init-method="init"/>
</beans>
Run Code Online (Sandbox Code Playgroud)
如何使用注释版本指定init方法?
我想知道如何为单个页面应用程序使用多个控制器.我试图解决这个问题并且我发现了与我的问题非常相似的问题,但是解决特定问题的答案很多,最终你没有为单个页面应用程序使用多个控制器.
那是因为对一个页面使用多个控制器是不明智的吗?或者它是不可能的?
假设我已经有一个kick-ass图像轮播控制器在主页面上工作,但后来我学会了如何(让我们说)使用模态,我也需要一个新的控制器(或者我需要一个控制器的任何其他东西).那我该怎么办?
我已经看到了其他问题的一些答案,他们问我几乎和我一样的事情,人们回答"*OMG.你为什么要这样做,就这样做......".
什么是最好的方式,或者你是如何做到的?
编辑
你们中的许多人正在回答声明两个控制器,然后使用ng-controller来调用它.我在下面使用这段代码然后用ng-controller调用MainCtrl.
app.config(function($routeProvider, $locationProvider) {
$routeProvider
.when('/', {
templateUrl: "templates/main.html",
controller:'MainCtrl',
})
.otherwise({
template: 'does not exists'
});
});
Run Code Online (Sandbox Code Playgroud)
如果我可以在没有它的情况下使用ng-controller,为什么我甚至需要在这里设置一个控制器呢?这让我很困惑.(你不能这样添加两个控制器,我想...)
非常简单的问题:ASP.NET中的控制器是为每个HTTP请求创建的,还是在应用程序启动时创建并在整个请求中重用?
是否只为特定的HTTP请求创建控制器?
如果我之前的假设是正确的,我可以依赖它吗?我想创建仅适用于一个请求的数据库上下文(实体框架).如果我将它创建为在控制器的构造函数中初始化的属性,是否会为每个请求创建新的上下文实例?
Derik Whitaker 几天前发表了一篇文章,这篇文章引起了我一直好奇的一段时间:控制器中是否存在业务逻辑?
到目前为止,我见过的所有ASP.NET MVC演示都将存储库访问和业务逻辑放在控制器中.有些甚至在那里抛出验证.这会导致相当大的膨胀控制器.这真的是使用MVC框架的方式吗?看起来这最终会导致很多重复的代码和逻辑分散在不同的控制器上.
我在Global.asax中有默认路由:
RouteTable.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = System.Web.Http.RouteParameter.Optional }
);
Run Code Online (Sandbox Code Playgroud)
我希望能够定位特定的功能,所以我创建了另一条路线:
RouteTable.Routes.MapHttpRoute(
name: "WithActionApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = System.Web.Http.RouteParameter.Optional }
);
Run Code Online (Sandbox Code Playgroud)
所以,在我的控制器中,我有:
public string Get(int id)
{
return "object of id id";
}
[HttpGet]
public IEnumerable<string> ByCategoryId(int id)
{
return new string[] { "byCategory1", "byCategory2" };
}
Run Code Online (Sandbox Code Playgroud)
打电话.../api/records/bycategoryid/5会给我我想要的东西.但是,通话.../api/records/1会给我错误
找到了与请求匹配的多个操作:...
我明白为什么那就是-航线只是定义哪些URL是有效的,但是当涉及到的功能匹配,都Get(int id)和ByCategoryId(int id)比赛api/{controller}/{id},这是混淆了框架.
我需要做些什么才能让默认的API路由再次运行,并保持一个{action}?我想创建一个名为RecordByCategoryIdController匹配默认API路由的不同控制器,我会请求它.../api/recordbycategoryid/5.但是,我发现这是一个"脏"(因此不令人满意)的解决方案.我已经找到了这方面的答案,没有关于使用路线{action}甚至提到这个问题的教程.
假设我有这个局部视图:
Your name is <strong>@firstName @lastName</strong>
Run Code Online (Sandbox Code Playgroud)
这可以通过仅限儿童的动作来访问:
[ChildActionOnly]
public ActionResult FullName(string firstName, string lastName)
{
}
Run Code Online (Sandbox Code Playgroud)
我想在另一个视图中使用这个局部视图:
@Html.RenderPartial("FullName")
Run Code Online (Sandbox Code Playgroud)
换句话说,我希望能够将firstName和lastName从视图传递到局部视图.我该怎么办?
model-view-controller asp.net-mvc controller asp.net-mvc-partialview asp.net-mvc-3
我开始使用Rails应用程序,一切正常.但是现在,我想重命名一个控制器和相关的模型:
我想将Corps控制器更改为Stores和模型相同(没有最终的s).
在谷歌上看,人们建议销毁,然后再次生成控制器和模型.问题是它会删除每个文件的实际代码!
有解决方案吗 提前致谢.
在我的控制器中,我想过滤一个对象数组.这些对象中的每一个都是一个可以包含字符串和列表的映射
我尝试使用$filter('filter')(array, function)格式,但我不知道如何访问我的函数内的数组的各个元素.这是一个显示我想要的内容的片段.
$filter('filter')(array, function() {
return criteriaMatch(item, criteria);
});
Run Code Online (Sandbox Code Playgroud)
然后在criteriaMatch(),我会检查每个属性是否匹配
var criteriaMatch = function(item, criteria) {
// go thro each individual property in the item and criteria
// and check if they are equal
}
Run Code Online (Sandbox Code Playgroud)
我必须在控制器中完成所有这些操作并编译列表列表并在范围内设置它们.所以我确实只需要以$filter('filter')这种方式访问.到目前为止,我在网络中找到的所有示例都在函数内部进行静态条件搜索,它们不传递条件对象并对数组中的每个项目进行测试.
我正在尝试生成一个控制器,其中包含所有RESTful操作.我在链接文本中读到,我需要做的就是使用只有控制器名称来调用生成器,我会得到它.所以,我运行了"script/generate rspec_controller Properties",我得到了一个空的控制器.
任何其他建议将不胜感激.
controller ×10
angularjs ×2
asp.net-mvc ×2
.net ×1
action ×1
annotations ×1
arrays ×1
asp.net ×1
filter ×1
httprequest ×1
java ×1
javascript ×1
model ×1
rename ×1
rest ×1
routing ×1
rspec ×1
spring ×1
spring-mvc ×1