我有一个mvc表单(由模型制作),当提交时,我想得到一个参数我有代码来设置表单并获取参数
using (@Html.BeginForm("myMethod", "Home", FormMethod.Get, new { id = @item.JobId })){
}
Run Code Online (Sandbox Code Playgroud)
在我家里的控制器里面
[HttpPost]
public FileStreamResult myMethod(string id)
{
sting str = id;
}
Run Code Online (Sandbox Code Playgroud)
但是,我总是得到错误
您正在查找的资源(或其中一个依赖项)可能已被删除,名称已更改或暂时不可用.请查看以下网址,确保拼写正确.
当我省略了[HttpPost],代码执行文件,但变量str和id为空.我该如何解决这个问题?
编辑
这可能是因为控制器中的myMethod不是ActionResult吗?我意识到当我有一个类型为Actionresult的方法时,该方法绑定到一个视图,一切都运行良好.但FileStreamresult类型无法绑定到View.如何将数据传递给此类方法?
如何从控制器外部的辅助方法生成指向控制器操作的URL?
我开发了一个使用REST api的单页应用程序.用户需要登录才能访问该应用程序.当用户登录时,他们将被重定向到/ dashboard.在此URL /路由上,我想根据用户的角色(例如普通用户或管理员用户)加载不同的模板和控制器.
我查看了模板部分下的https://github.com/angular-ui/ui-router/wiki,但没有一个选项支持我想要实现的目标.
任何解决方案还应根据用户角色加载不同的控制器,例如UserDashboardController或AdminDashboardController.
所以我需要的是根据用户登录时在服务中设置的用户角色变量加载不同模板和控制器的单一路径.
我是在考虑正确的方向,还是应该实施另一种解决方案?
任何有关这方面的帮助将不胜感激.
我有一个控制器动作,我想称之为另一个控制器动作.
这是一件有效的事吗.可能吗?
在ASP.NET MVC中有没有办法通过代码枚举控制器并得到他们的名字?
例:
AccountController
HomeController
PersonController
Run Code Online (Sandbox Code Playgroud)
会给我一个列表,如:
Account, Home, Person
Run Code Online (Sandbox Code Playgroud) 更改mvc项目的命名空间后,我遇到了以下问题:
找到了多个匹配名为"Home"的控制器的类型.如果为此请求提供服务的路由('{controller}/{action}/{id}')未指定名称空间来搜索与请求匹配的控制器,则会发生这种情况.如果是这种情况,请通过调用带有'namespaces'参数的'MapRoute'方法的重载来注册此路由.
对'Home'的请求找到了以下匹配的控制器:
oldns .Controllers.HomeController
newns .Controllers.HomeController
关于此错误还有其他已回答的问题,但涵盖其他原因:
我正在尝试从.net Web API控制器操作中调用客户端方法.
我可以这样做吗?
我能找到的唯一一个接近我要做的就是这个:
在那里,使用GlobalHost.ConnectionManager.GetHubContext从asp.net MVC控制器动作中发送消息.
当我在我的Web API操作中尝试时,不会抛出任何错误,但是从不在客户端调用方法"methodInJavascript".
Public ActionResult MyControllerMethod()
{
var context = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
context.Clients.All.methodInJavascript("hello world");
// or
context.Clients.Group("groupname").methodInJavascript("hello world");
}
Run Code Online (Sandbox Code Playgroud)
当我在该动作中设置断点时,我看到代码正在被触及并执行.但是在javascript客户端没有任何事情发生.
为什么?Web API是如此不同,以至于这不起作用?有没有其他人尝试过并取得了成功?
当我从我的中心"内部"调用"methodInJavascript"时,它完美地工作.从.net Web API控制器操作中调用时,将无法正常工作.
更新:
在研究这个问题后,我没有解决方案.我只能假设有东西从像这样的例子失踪服务器与SignalR在ASP.NET MVC 4不会通过客户端的消息,这从控制器的WebAPI调用问题枢纽SignalR像也许有一个额外的配置步骤,以使从HubContext调用或者其他的东西.我最初在这里发布的代码就像那些示例中出现的代码没有被证明有任何缺陷.任何人都可以看到代码中的缺陷吗?从html调用工作.我在我的应用程序中广泛使用它,从未遇到过问题.我从未在API控制器工作中看到来自HubContext的调用.没有错误.对客户端没有任何结果.
已解决(种类):
上面的代码确实在发布时起作用.但是,通过localhost在Visual Studio开发环境中不起作用.客户端没有错误但没有结果.将代码原样发布到Web上的真实服务器确实有效.我从没想过会有什么不同所以我从未尝试过.如果它在本地不起作用,则无法发布.它现在正在运行,但我想知道为什么它在开发环境中不能通过localhost工作.无法使用断点等进行本地测试.
我感觉这是signalr虚拟目录.在本地运行和发布时有些不同.不知道什么,但我看到很多帖子,如http://www.bitwisejourneys.com/signalr-hosting-in-iis-a-nasty-gotcha/.现在阅读,看看是否有办法让它在本地和发布工作.
我正在将devise_invitable集成到我的应用程序中,我不得不编写一个自定义控制器 - InvitationsController - 来覆盖gem中的一些方法.现在,我想编写测试来涵盖我已完成的工作,但我无法弄清楚如何为新控制器生成规范.任何帮助将不胜感激.
谢谢!
如何从具有最新Symfony和Doctrine的控制器中获取实体管理器?
"The Book"中描述的方式现已标记为已弃用.什么是现代(适当)的方式来做到这一点?
public function someAction()
{
// getEntityManager() from Doctrine\Bundle\DoctrineBundle\Registry is deprecated
$entityManager = $this->getDoctrine()->getEntityManager();
...
}
Run Code Online (Sandbox Code Playgroud) 我尝试在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身份验证.
我该如何解决这个错误?
controller ×10
asp.net-mvc ×6
c# ×2
action ×1
angularjs ×1
doctrine-orm ×1
forms ×1
html-helper ×1
jquery ×1
namespaces ×1
owin ×1
rspec ×1
signalr ×1
signalr-hub ×1
symfony ×1
templates ×1
user-roles ×1