Tag: 控制器

C#MVC视图之间没有提交传递对象

我很抱歉我的错别字。我正在研究概念certificateC#ASP.NET MVC应用程序,我需要在没有post和get时在两个视图之间传递数据。 一个视图启动modal dialog,我需要它们之间的通信。 我们正在使用JQuery。 我有一个名为Charges.cshtml的视图,带有数据网格。 数据网格的第一列可以具有span元素或链接元素,这取决于将告知电荷是具有单个还是多个描述的属性。 视图如下所示。 如果费用有多个描述,用户将点击相应的描述链接(在这种情况下为Description2),将打开一个modal dialog,显示如下所示的各种描述 现在,在此modal dialog中,用户将确认/选择一个描述。 现在我需要关闭modal dialog并更新所选电荷的描述,如下所示 这里的难点是如何在两个视图之间传递数据。 我可以通过控制器或通过JavaScript传递数据。 我尝试了各种方法将所选费用从Charges.cshtml传递到LoanCharge控制器中的LoadLoanChargeDescriptions方法,如json serialize,ViewData,ViewBag,TempData等,但没有用。 我可以传递简单的数据类型,如int,string,float但不是整个对象。 我觉得我需要将CurrentDescription和Descriptions传递给我的控制器,并且我需要将其移动到其他部分。 我试图传递字符串列表,但无法看到如何在控制器中访问它们,因为我在控制器中计数为0。 我能够打开多个描述UI的弹出窗口(现在只是添加了Hello文本) 请参阅下面的我的代码片段 Charges.cshtml @model ChargeViewModel @using (Html.FAFBeginForm()) { //….. @if(Model.IsMultipleMatch) { var loanCharge = Model as ChargeViewModel; if (loanCharge.IsMultipleMatch == true) { //string vm = @Newtonsoft.Json.JsonConvert.SerializeObject(loanCharge); @loanCharge.Description } } else { Model.Description } } […]

在Mvc.Controller中使用Server

我有自己inheritance的来自Mvc.Controller ,然后我的所有控制器都inheritance自。 我使用接口编写了一个提供程序,并将其实现为MyService ,构造函数使用了HttpServerUtilityBase的Mvc.Controller的Server属性。 但是,我在App.Controller的构造函数中实例化了MyService 。 问题是在构造MyService时Controller的Server属性为null 。 我使用了public Controller () : base() { }来获取要构造的基础。 但是, Server仍为null 。 我想尽可能避免使用Web.HttpContext.Current.Server 。 有没有人解决这个问题? 编辑:嗯,我已经实现了tvanfosson的建议,当我的app在属性get方法中构造MyService时, Server仍为null。 编辑2:没关系,我是个傻瓜。 我有另一个使用Server Controller ,并没有改变它。 案件结案。

在控制器上找不到公共操作方法

我有以下控制器方法: public ActionResult GetResults(string viewToReturn, int resultsPerPage, string classification = null, string sessionId = null, int? lastId= null) { … } 通过以下url调用上面的方法: http://localhost:63455/Home/GetResults?viewToReturn=grid&resultsPerPage=30 导致此消息抛出exception: 在控制器’MyWebSite.Controllers.HomeController’上找不到公共操作方法’GetResults’。 这里是RegisterRoutes: …… routes.MapRoute(“Home”, “home/{action}/{*qualifier}”, new { controller = “Home”, action = “Index”, qualifier = UrlParameter.Optional }); …… routes.MapRoute(“SearchTitle”, “{*path}”, new { controller = “Home”, action = “SearchTitle”, path = UrlParameter.Optional […]

ASP.NET MVC 2中具有一个名称的多个控制器

尝试运行我的ASP.NET MVC应用程序时收到以下错误: 对’Account’的请求找到了以下匹配的控制器: uqs.Controllers.Admin.AccountController MvcApplication1.Controllers.AccountController 我在项目中搜索了MvcApplication1.Controllers.AccountController来删除它,但我找不到匹配项。 我尝试注册修复它的路线: routes.MapRoute( “LogAccount”, // Route name “{controller}/{action}/{id}”, // URL with parameters new { controller = “Account”, action = “LogOn”, id = “” }, new string[] { “uqs.Controllers.Admin” } // Parameter defaults ); 但这并没有解决它。 发现多个类型与名为“帐户”的控制器匹配。 我该如何解决这个问题?

ASP.NET MVC Controller.OnException未被调用

我有一个基本控制器类,我将覆盖Controller.OnException处理程序方法,以便为将inheritance此类的某些类型的控制器提供一般error handling(这些控制器将返回JSON结果)。 当控制器引发exception时,永远不会调用OnException方法。 有谁看到我做错了什么,还是有更好的方法来处理这种情况? 使用MVC 1.0 基类: public class APIController : Controller { protected override void OnException(ExceptionContext filterContext) { //This is never called filterContext.Result = new JsonResult(); base.OnException(filterContext); } } inheritance类: public class MyController : APIController { public AjaxResult ForcedException() { throw new SystemException(); } }

使用控制器动作filter捕获HTML输出

我在捕获HTML输出的动作上有以下filter,将其转换为字符串,执行一些操作以修改字符串,并返回带有新字符串的ContentResult。 不幸的是,我一直以一个空字符串结束。 private class UpdateFilter : ActionFilterAttribute { private Stream stream; public override void OnActionExecuting(ActionExecutingContext filterContext) { stream = filterContext.HttpContext.Response.Filter; stream = new MemoryStream(); filterContext.HttpContext.Response.Filter = stream; } public override void OnResultExecuted(ResultExecutedContext filterContext) { StreamReader responsereader = new StreamReader(filterContext.HttpContext.Response.Filter); //empty stream? why? responsereader.BaseStream.Position = 0; string response = responsereader.ReadToEnd(); ContentResult contres = new ContentResult(); contres.Content […]

从任意URL手动实例化Controller实例?

我的技能让我失望,我知道我已经看到了这个代码,但我找不到它。 获取任意URL的最快方法是什么,通过asp.net mvc路由系统运行它,并在另一端引用控制器实例? 例如,代码执行在一些任意控制器方法中。 我想做这样的事情: … string myURL = “http://mysite/mycontroller/myaction/myparameters”; RouteData fakeRouteData = new RouteData(Route???, IRouteHandler???) RequestContext ctxt = new RequestContext(this.ControllerContext.HttpContext, fakeRouteData); ControllerFactory factory = ControllerBuilder.Current.GetControllerFactory(); Controller result = factory.CreateController(ctxt, controllername???) 我正在尝试获取控制器的实例,就像路由系统一样,无论代码在哪里执行。 我不清楚在这一点上如何将各个部分组合在一起。 虽然我最终会发现它,但我想我可以通过询问来节省时间;)

从Controller访问数据库实体

TL;博士 在一个很好的设计。 应该在单独的业务逻辑层(在asp.net MVC模型中)处理访问数据库,还是可以将IQueryable s或DbContext对象传递给控制器​​? 为什么? 各自的优点和缺点是什么? 我正在用C#构建一个ASP.NET MVC应用程序。 它使用EntityFramework作为ORM。 让我们稍微简化一下这个场景。 我有一个可爱的蓬松小猫数据库表。 每只小猫都有小猫图像链接,小猫蓬松指数,小猫名称和小猫ID。 这些映射到EF生成的名为Kitten POCO。 我可能会在其他项目中使用此类,而不仅仅是asp.net MVC项目。 我有一个KittenController应该在/Kittens取得最新的蓬松小猫。 它可能包含选择小猫的一些逻辑,但没有太多的逻辑。 我一直在和朋友争论如何实现这一点,我不会透露双方:) 选项1:控制器中的db: public ActionResult Kittens() // some parameters might be here { using(var db = new KittenEntities()){ // db can also be injected, var result = db.Kittens // this explicit query is here .Where(kitten=>kitten.fluffiness > 10) […]

无法检索元数据 – MVC应用程序

我这样做是为了创建一个简单的MVC应用程序。 创建模型后,当我尝试添加控制器时,出现以下错误: 无法检索“MvcApplication.Models.Movie”的元数据。 键“attachdbfilename”的值无效。 有人可以告诉我为什么会收到此错误。 更新 :我看到了这一点,其中通过更改providerName提供了解决方案。 但在我的情况下,它已经是System.Data.SqlClient 。 以下是我的connectionStrings:

如何在两个控制器操作之间避免AmbiguousMatchException?

我有两个具有相同名称但具有不同方法签名的控制器操作。 它们看起来像这样: // // GET: /Stationery/5?asHtml=true [AcceptVerbs(HttpVerbs.Get)] public ContentResult Show(int id, bool asHtml) { if (!asHtml) RedirectToAction(“Show”, id); var result = Stationery.Load(id); return Content(result.GetHtml()); } // // GET: /Stationery/5 [AcceptVerbs(HttpVerbs.Get)] public XmlResult Show(int id) { var result = Stationery.Load(id); return new XmlResult(result); } 我的unit testing没有调用一个或另一个控制器动作的问题,但我的测试html页面抛出System.Reflection.AmbiguousMatchException。 Show the stationery Html Show the stationery 需要改变什么来使这项工作?