我尝试在MVC应用程序中使用SignalR.它工作正常,但我在Chrome控制台中收到以下错误
WebSocket connection to 'ws://localhost:18245/signalr/connect?transport=webSockets&clientProtocol=1.4&connectionToken=bNDGLnbSQThqY%2FSjo1bt
8%2FL45Xs22BDs2VcY8O7HIkJdDaUJ4ftIc54av%2BELjr27ekHUiTYWgFMfG6o7RaZwhf
fpXavzWQ1jvkaxGm5rI%2BWtK7j0g1eQC2aOYP366WmRQLXCiYJfsm4EbwX6T8n2Aw
%3D%3D&connectionData=%5B%7B%22name%22%3A%22importerhub%
22%7D%5D&tid=9' failed: HTTP Authentication failed; no valid credentials available
Run Code Online (Sandbox Code Playgroud)
有趣的是,我通过Hub从Controller调用的jquery方法运行正常.
jQuery的:
$(function () {
// Initialize the connection to the server
var importerHub = $.connection.importerHub;
// Preparing a client side function
// called sendMessage that will be called from the server side
importerHub.client.sendMessage = function (message) {
showOrUpdateSuccessMessage(message);
};
$.connection.hub.start();
});
Run Code Online (Sandbox Code Playgroud)
控制器:
var hubContext = GlobalHost.ConnectionManager.GetHubContext<ImporterHub>();
hubContext.Clients.All.sendMessage("All operations complete");
Run Code Online (Sandbox Code Playgroud)
我使用.Net v4.5.1,SignalR v2.1.2.0和IIS 8.5与Windows身份验证.
我该如何解决这个错误?
我有一个非常简单的控制器设置:
class LibrariesController < ApplicationController
...
def create
@user.libraries << Library.new(params)
@user.save
render :json => "success!"
end
...
end
Run Code Online (Sandbox Code Playgroud)
基本上,每当我尝试使用HTTParty.post访问LibrariesController的create方法时,我在服务器上得到一个WEBrick :: HTTPStatus :: LengthRequired错误.甚至没有访问该方法!这是堆栈跟踪(这是完整的输出服务器端 - 注意控制器甚至没有被访问):
[2010-04-16 00:35:39] ERROR WEBrick::HTTPStatus::LengthRequired
[2010-04-16 00:35:39] ERROR HTTPRequest#fixup: WEBrick::HTTPStatus::LengthRequired occured.
[2010-04-16 00:35:39] ERROR NoMethodError: private method `gsub!' called for #<Class:0x2362160>
/usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/1.8/webrick/htmlutils.rb:17:in `escape'
/usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/1.8/webrick/httpresponse.rb:232:in `set_error'
/usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/1.8/webrick/httpserver.rb:70:in `run'
/usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/1.8/webrick/server.rb:173:in `start_thread'
/usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/1.8/webrick/server.rb:162:in `start'
/usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/1.8/webrick/server.rb:162:in `start_thread'
/usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/1.8/webrick/server.rb:95:in `start'
/usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/1.8/webrick/server.rb:92:in `each'
/usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/1.8/webrick/server.rb:92:in `start'
/usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/1.8/webrick/server.rb:23:in `start'
/usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/1.8/webrick/server.rb:82:in `start'
/usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/gems/1.8/gems/rack-1.0.1/lib/rack/handler/webrick.rb:14:in `run'
/usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/commands/server.rb:111
/usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
/usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
script/server:3
Run Code Online (Sandbox Code Playgroud)
我正在运行rails 2.3.5和ruby 1.8.7.任何帮助将不胜感激.如果您需要更多详细信息,请告诉我们.
我无法理解,如何使用TryUpdateModel并同时保存MVC架构.
如果我没有弄错的话,使用datacontexts必须在模型中.所以,这样的代码
var db=new TestEverybody();//it is class, which was generated by EntityFramework
var currentTesting=db.Testing.(t => t.id == id).First();
Run Code Online (Sandbox Code Playgroud)
必须位于模型中,而不是控制器中,不是吗?
但TryUpdateModel用法的示例如下:
public ActionResult Edit(Testing obj)//Testing collection
{
var db = new TestEverybody();
var currentTesting=db.Testing.(t => t.id == obj.id).First();
TryUpdateModel(currentTesting);
db.SaveChanges();
return RedirectToAction("Index");
}
Run Code Online (Sandbox Code Playgroud)
这种方式不会打破MVC架构吗?我们在控制器中使用数据库,而不是在特殊的Model类中.
那么,在真实项目中使用TryUpdateModel的最佳方法是什么?
是否可以从控制器调用辅助方法?如果是,如何在Rails 3中执行此操作?
我想$data从命名的控制器传递poll 到results_view但是我得到一个未定义的变量错误.
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Poll extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->database();
$this->load->helper('form');
}
public function index()
{
$this->load->view('poll_view',$data);
}
public function vote()
{
echo "Voting Successfull";
$this->db->insert('votes',$_POST);
}
public function results()
{
echo "These are the results";
//$query = $this->db->get('votes');
$data = "hello";
$this->load->view('results_view', $data);
}
}
Run Code Online (Sandbox Code Playgroud)
Results_view.php
<html>
<?php echo $data; ?>
</html>
Run Code Online (Sandbox Code Playgroud) 我在ASP.NET MVC项目中使用了一个母版页.该母版页需要一些ViewData,它会在每个页面上显示.
如果我没有在我的控制器中设置此ViewData键,则会收到无法找到它的错误.但是,我不想在每个控制器中设置ViewData(我不想ViewData["foo"] = GetFoo();在每个控制器中说).
所以,我正在考虑在基本控制器中设置它,并让每个控制器继承自这个基本控制器.在基本控制器默认构造函数中,我设置了ViewData.我在这里找到了类似的方法:http://www.asp.net/learn/MVC/tutorial-13-cs.aspx.到目前为止一切都很好,这可行...但问题是这些数据来自某个地方的数据库.
现在,当我想对我的控制器进行单元测试时,从基本控制器继承的控制器调用它的默认构造函数.在默认构造函数中,我初始化我的存储库类以从数据库中获取此数据.结果:我的单元测试失败,因为它无法访问数据(我当然不希望他们访问这些数据).
我也不想将正确的Repository(或DataContext,无论你怎么命名)类传递给每个控制器,而控制器又将它传递给默认控制器,我可以用我的单元测试来模拟它.控制器又依赖于其他存储库类,我最终会将多个参数传递给构造函数.为我的感觉工作太多,或者我错了?还有其他解决方案吗?
我已经尝试过使用StructureMap,但最后我觉得这不会解决我的问题,因为每个控制器仍然需要调用基础构造函数来初始化存储库类,所以我不能模拟它.
这是一个类似的问题,但我发现没有给出令人满意的答案.我能否以一种简洁的方式解决这个问题,也许使用StructureMap作为解决方案?或者我应该把它吸干并将存储库传递给每个控制器并再次传递给基本控制器?再一次,对于如此简单的事情感觉就像这么多工作.谢谢!
我遇到了一个相当令人沮丧的问题.我的MVC网站大部分运行正常,但随机抛出一个错误(向用户显示一个友好的错误).当我检查日志时,这就是我得到的:
System.InvalidOperationException: The model item passed into the dictionary is of type 'System.Web.Mvc.HandleErrorInfo' but this dictionary requires a model item of type 'BaseViewData'.
Run Code Online (Sandbox Code Playgroud)
片刻之后,同一个用户可以点击刷新并且页面加载正常.我被卡住了.(
更新:添加堆栈跟踪
System.Web.HttpUnhandledException: Exception of type 'System.Web.HttpUnhandledException' was thrown. ---> System.InvalidOperationException: The model item passed into the dictionary is of type 'System.Web.Mvc.HandleErrorInfo' but this dictionary requires a model item of type 'BaseViewData'.
at System.Web.Mvc.ViewDataDictionary`1.SetModel(Object value)
at System.Web.Mvc.ViewDataDictionary..ctor(ViewDataDictionary dictionary)
at System.Web.Mvc.HtmlHelper`1..ctor(ViewContext viewContext, IViewDataContainer viewDataContainer, RouteCollection routeCollection)
at System.Web.Mvc.ViewMasterPage`1.get_Html()
at ASP.views_shared_site_master.__Render__control1(HtmlTextWriter __w, Control parameterContainer)
at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) …Run Code Online (Sandbox Code Playgroud) 我是Fx的新手.我有一个带有10个标签的TabPanel.每个选项卡都有许多控件(图表,按钮等),我想要的是为每个选项卡分配一个控制器.SceneBuilder只让我为整个视图分配一个控制器,我的意思是,只有顶部面板(根)有"Controller类"选项,所以我必须为一个类中的所有选项卡编写代码,这样就像需要,导致一个非常大的类,难以理解和维护.也许解决方案非常简单,但正如我所说,我对FX的经验很少,而且我无法在网上找到类似的东西.
任何的想法?谢谢.
我想在Laravel中创建一个API第一个应用程序.我不知道这样做的最佳方法是什么,我会解释我想要做什么,但请随意以不同的方式给出答案.
我不希望我的所有前端都用javascript编写,并用angular.js或类似的东西解析API的JSON输出.我希望我的Laravel应用程序生成HTML视图.我正试图让两个控制器一个用于API,另一个用于网络.对于show User动作,我的routes.php如下所示:
# the web controller
Route::controller('user', 'WebUserController');
# the api controller
Route::group(array('prefix' => 'api'), function() {
Route::resource('user', 'UserController');
});
Run Code Online (Sandbox Code Playgroud)
所以/user将带我去WebUserController,/api/user并带我去UserController.现在我想将所有逻辑放在API中UserController,并从中调用它的动作WebUserController.以下是两者的代码:
class UserController extends BaseController
{
public function show($id)
{
$user = User::find($id);
return Response::json(array('success'=>true,'user'=>$user->toArray()));
}
}
class WebUserController extends UserController
{
public function getView($id)
{
# call the show method of the API's User Controller
$response = $this->show($id);
return View::make('user.view')->with('data', $response->getData());
}
}
Run Code Online (Sandbox Code Playgroud)
在WebUserController我能够获得响应的json内容 …
我在我的标准上做了一些简单的MS单元测试,没有什么特别的控制器.
当我检查属性时,ViewName从返回的ViewResult对象中,它是""(空的).
我的印象ViewName是它的名称暗示View(正如这篇 关于ASP.NET MVC控制器测试的MS文章所建议的那样).
顺便说一句,当我测试ViewData时,它就在那里并且正确.
这是我的代码......
public ActionResult Index(int? page, string tag)
{
if (page == null || page <= 0)
{
page = 1;
}
var viewData = new IndexViewData
{
... my property setters, etc ...
};
return View(viewData);
}
[TestMethod]
public void Index_Action_Should_Return_Index_View_For_Default_HomePage()
{
// Arrange.
var controller = PostController; // Wrapper, cause I use D.I.
// Act.
ViewResult viewResult = …Run Code Online (Sandbox Code Playgroud) controller ×10
asp.net-mvc ×5
php ×2
api ×1
c# ×1
codeigniter ×1
helpers ×1
javafx ×1
jquery ×1
laravel ×1
master-pages ×1
model ×1
owin ×1
rest ×1
signalr ×1
tabpanel ×1
unit-testing ×1
view ×1
viewdata ×1
views ×1