标签: controller

如何使用ASP.NET MVC中的基本控制器创建强类型母版页

NerdDinners示例之后,我有兴趣创建一个强类型的母版页.为了实现这一点,我使用一个基本控制器来检索母版页的数据.所有其他控制器都继承此类.同样,我有ViewModels主页和任何其他视图.视图ViewModel类继承自母版页ViewModel.

子控制器应该如何确保将母版页的数据传递给View而不设置ViewModel与母版页本身相关的属性?

我的母版页将显示一些按钮,这些按钮在XML文件中确定,因此Buttons我填充的类.

MasterPage ViewModel代码段

using System.Collections.Generic;

namespace Site1.Models
{
    public class MasterViewModel
    {
        public List<Button> Buttons{set; get;}
    }
}
Run Code Online (Sandbox Code Playgroud)

视图 ViewModel

namespace Site1.Models
{
    public class View1ViewModel : MasterViewModel
    {
        public SomeDataClass SomeData { get; set; }
    }
}
Run Code Online (Sandbox Code Playgroud)

基础控制器

using System.Collections.Generic;
using System.Web.Mvc;
using Site1.Models;

namespace Site1.Controllers
{
    public abstract class BaseController : Controller
    {
        protected MasterViewModel model = new MasterViewModel();

        public BaseController()
        {
            model.Buttons …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc controller master-pages viewmodel

20
推荐指数
2
解决办法
7997
查看次数

NameError(未定义的局部变量或方法`devise_parameter_sanitizer'

我正在使用设计进行用户身份验证.但是,当用户尝试创建帐户时,我收到此错误:

NameError (undefined local variable or method `devise_parameter_sanitizer' 
Run Code Online (Sandbox Code Playgroud)

这就是我的设计注册控制器的样子:

def sign_up_params
devise_parameter_sanitizer.for(:sign_up)
end
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

提前致谢

controller ruby-on-rails devise ruby-on-rails-3

20
推荐指数
2
解决办法
3941
查看次数

Spring Controller:我可以在调用每个@RequestMapping方法之前调用一个方法吗?

我有一些常见的组件,它们始终存在于给定Controller类所服务的每个页面中.

在每个@RequestMapping方法的开头,我使用这些常见组件填充模型.

有没有办法定义在每个控制器方法之前调用的方法,以便我可以将所有这些复制/粘贴到一个地方?

java controller spring-mvc

19
推荐指数
3
解决办法
3万
查看次数

Rails:通过表单创建新记录时验证失败后的URL

让我们说我正在使用一个表单和一个标准的Rails restful控制器创建一个新的Foo,它看起来像这样:

class FoosController < ApplicationController
  ...
  def index
    @foos = Foo.all
  end

  def new
    @foo = Foo.new
  end

  def create
    @foo = Foo.create(params[:foo])
    if @foo.save
      redirect_to foos_path, :notice => 'Created a foo.'
    else
      render 'new'
    end
  end
  ...
end
Run Code Online (Sandbox Code Playgroud)

所以,如果我使用标准的REST风格的控制器(如上),然后当我创建我的富example.com/foos/new,如果我提交表单,它可以正确保存我在example.com/foos显示索引操作.但是,如果未正确填充表单,则会再次呈现表单并显示错误消息.这一切都是普通的香草.

但是,如果显示错误,将呈现表单页面,但URL将是example.com/foos,因为CREATE操作会发布到该URL.但是,人们期望找到Foos #index at example.com/foos,而不是他们刚刚提交的表单,并添加了错误消息.

这似乎是Rails的标准行为,但它对我来说并没有多大意义.显然我可以重定向回new而不是从create动作渲染new,但问题是错误消息等会随着内存中部分完整的Foos而丢失.

有没有一个干净的解决方案来解决这个问题,example.com/foos/new当他们提交的新Foo表单中存在错误时,可以将人们发送回去吗?

谢谢!

url controller ruby-on-rails view ruby-on-rails-3

19
推荐指数
2
解决办法
3590
查看次数

AngularJS多次使用Controller和rootScope

我想在2个单独的HTML元素上使用控制器,并使用$ rootScope在编辑一个时保持2个列表同步:

HTML

<ul class="nav" ng-controller="Menu">
    <li ng-repeat="item in menu">
        <a href="{{item.href}}">{{item.title}}</a>
    </li>
</ul>

<div ng-controller="Menu">
    <input type="text" id="newItem" value="" />
    <input type="submit" ng-click="addItem()" />
    <ul class="nav" ng-controller="Menu">
        <li ng-repeat="item in menu">
            <a href="{{item.href}}">{{item.title}}</a>
        </li>
    </ul>    
</div>
Run Code Online (Sandbox Code Playgroud)

JS

angular.module('menuApp', ['menuServices']).
    run(function($rootScope){
        $rootScope.menu = [];
    });

angular.module('menuServices', ['ngResource']).
    factory('MenuData', function ($resource) {
        return $resource(
            '/tool/menu.cfc', 
            {
                returnFormat: 'json'
            },
            {
                getMenu: {
                    method: 'GET',
                    params: {method: 'getMenu'}
                },
                addItem: {
                    method: 'GET',
                    params: {method: 'addItem'}
                }
            }
        );
    });

function Menu($scope, …
Run Code Online (Sandbox Code Playgroud)

javascript data-binding controller angularjs

19
推荐指数
2
解决办法
4万
查看次数

如何在销毁控制器/ $ scope时取消绑定外部事件?

假设我有一个控制器用于正在呈现的页面ng-view.

此控制器绑定到外部源(例如应用程序范围的消息总线)的某些事件以更新其模型.这基本上非常简单:

function MyController ($scope) {
  $scope.bar = '…';

  externalSource.on('foo', function (data) {
    $scope.$apply(function () {
      $scope.bar = data.bar;
    });
  });
}
Run Code Online (Sandbox Code Playgroud)

问题是:如果控制器与其关联的视图不再显示,我如何从外部源取消绑定控制器?

是否存在诸如dispose事件或类似事物之类的东西?

或者我的方法是完全错误的,我应该以其他方式处理类似的事情?如果是这样,怎么样?

events controller angularjs

19
推荐指数
1
解决办法
7370
查看次数

Laravel:在不更改URL的情况下在另一个控制器中加载方法

我有这条路线:Route::controller('/', 'PearsController');在Laravel中是否可以让PearsController从另一个控制器加载一个方法,这样URL就不会改变?

例如:

// route:
Route::controller('/', 'PearsController');


// controllers
class PearsController extends BaseController {

    public function getAbc() {
        // How do I load ApplesController@getSomething so I can split up
        // my methods without changing the url? (retains domain.com/abc)
    }

}

class ApplesController extends BaseController {

    public function getSomething() {
        echo 'It works!'
    }

}
Run Code Online (Sandbox Code Playgroud)

php controller laravel

19
推荐指数
4
解决办法
4万
查看次数

Symfony控制器嵌入错误:URI"/ _fragment"的控制器不可调用

我在我的Twig模板中调用了这样的渲染(第18行)

{{ render(controller('AcmeReadingBundle:Default:newAction')) }}
Run Code Online (Sandbox Code Playgroud)

控制器是

public function newAction(Request $request)
    { 
      $message = new Message();
      $form = $this->createFormBuilder($message)
        ->add('body', 'text')
        ->add('save', 'submit')
        ->getForm();

      $form->handleRequest($request);

      return $this->render('AcmeReadingBundle:Default:new.html.twig', array(
          'form' => $form->createView(),
        ));
    }
Run Code Online (Sandbox Code Playgroud)

而new.html.twig文件是

{{ form(form) }}
Run Code Online (Sandbox Code Playgroud)

我一直收到这个错误:

An exception has been thrown during the rendering of a template ("The controller for URI "/_fragment" is not callable.") in AcmeReadingBundle:Default:show.html.twig at line 18.
Run Code Online (Sandbox Code Playgroud)

controller render symfony

19
推荐指数
1
解决办法
2万
查看次数

如何将参数与@ url.action一起传递给控制器

我有以下代码片段我想用@ url.action传递data-id ="0",我该怎么做

<a class="v-patient pointer" data-id="0" href="@Url.Action("View1", "Task")">View Patient</a></td>
Run Code Online (Sandbox Code Playgroud)

我的任务控制器

public ActionResult View1(string id)
        {
            return View();
        }
Run Code Online (Sandbox Code Playgroud)

url controller html-helper razor

19
推荐指数
1
解决办法
7万
查看次数

Spring Boot - 重定向到不同的控制器方法

我是Spring Boot的新手.我正在使用SpringBoot和Thymeleaf创建一个非常基本的应用程序.在控制器中我有两种方法如下:

Method1 - 此方法显示数据库中的所有数据:

  @RequestMapping("/showData")
public String showData(Model model)
{
    model.addAttribute("Data", dataRepo.findAll());
    return "show_data";
}
Run Code Online (Sandbox Code Playgroud)

Method2 - 此方法将数据添加到数据库:

@RequestMapping(value = "/addData", method = RequestMethod.POST)
public String addData(@Valid Data data, BindingResult bindingResult, Model model) {
    if (bindingResult.hasErrors()) {
        return "add_data";
    }
    model.addAttribute("data", data);
    investmentTypeRepo.save(data);

    return "add_data.html";
}
Run Code Online (Sandbox Code Playgroud)

HTML文件与这些方法相对应,即show_data.html和add_data.html.

一旦addData方法完成,我想显示数据库中的所有数据.但是,上面的代码会将代码重定向到静态add_data.html页面,并且不会显示新添加的数据.我需要以某种方式调用控制器上的showData方法,因此我需要将用户重定向到/ showData URL.这可能吗?如果是这样,怎么办呢?

提前致谢.

controller thymeleaf spring-boot

19
推荐指数
2
解决办法
4万
查看次数