Tag: asp.net mvc 4

ModelBinding:MVC4 / C中的POST数据(可能来自Ruby)#

我们正在与chargify http://www.chargify.com集成,我需要在我们的MVC4 / C#服务器中处理来自Chargify的webhooks。 Chargify以(ruby)方式发送POST数据 – 子对象在方括号中分隔,如下所示: POST /1ffaj2f1 HTTP/1.1 X-Chargify-Webhook-Signature: 526ccfd9677668674eaa6ba5d447e93a X-Chargify-Webhook-Id: 11238622 User-Agent: Ruby Host: requestb.in Content-Type: application/x-www-form-urlencoded Content-Length: 5159 Connection: close Accept-Encoding: gzip, deflate Accept: */*; q=0.5, application/xml id=11238622&event=payment_success&payload[subscription][activated_at]=2013-05-22%2001%3A25%3A20%20-0400&payload[subscription][balance_in_cents]=0&… 问题是在.NET端,默认模型绑定器不喜欢方括号[ ] ,而是期望子对象以点缀符号分隔,如abcd=value 我有什么选择让模型绑定器工作? 我能想到以下几点: 使用委托处理程序挂钩请求,读取req主体并将[]替换为点(。)。 然而,这至少感觉有点冒险 编写一个可以与[]一起使用的自定义模型绑定器 – 希望能够以某种方式委托给默认处理程序。 不知道怎么回事 – 但是很想听到一些想法。 只需在Action中使用formcollection参数即可。 处理表单集合键以基于键形成递归字典。 这也意味着我必须处理整个字符串(日期,ids等等) 什么是最好的方式,我该如何去做。

使用Ninject将通用接口绑定到存储库时,获取“MissingMethodException:无法创建接口实例”

按照此处的指南,但不是StructureMap尝试使用Ninject。 IRepository我尝试将一个IRepository注入到action方法的参数中时,它都会抛出“MissingMethodException:无法创建接口实例”错误。 更新:还没有找到bootstrapper.cs,我使用了MVC3 Ninject Nuget包。 public ActionResult Index(IRepository repo) { return View(); } NinjectWebCommon.cs private static void RegisterServices(IKernel kernel) { string Cname = “VeraDB”; IDbContext context = new VeraContext(“VeraDB”); kernel.Bind().To().InRequestScope().WithConstructorArgument(“ConnectionStringName”, Cname); kernel.Bind(typeof(IRepository)).To(typeof(EFRepository)).WithConstructorArgument(“context”,context); } IRepository public interface IRepository where T : class { void DeleteOnSubmit(T entity); IQueryable GetAll(); T GetById(object id); void SaveOrUpdate(T entity); } EFRepository […]

为什么MVC无国籍 – 如何解释?

同时向我的学生解释ASP.NET MVC的概念 MVC是无国籍的。 它建立在另一个无状态协议之上 – HTTP和HTTPS 但是一名学生打断了他的话, 你告诉MVC是无状态的 无状态协议从不关心响应是否从服务器返回。 但是,在ASP.NET MVC框架中,您发出请求并等待响应。 由于您等待响应,因此应将其称为有状态服务。 你怎么称它为无国籍服务呢? 我真的被困了,想知道该问题的答案。 有任何想法吗?

控制器名称的MVC路由约束

我的路线设置如下: context.MapRoute( name: “Area”, url: “Area/{controller}/{action}”, defaults: new { controller = “Home”, action = “Dashboard” } ); context.MapRoute( name: “AccountArea”, url: “Area/{accountFriendlyId}/{controller}/{action}”, defaults: new { controller = “Home”, action = “Dashboard”, accountFriendlyId = RouteParameter.Optional } ); context.MapRoute( name: “AccountCampaignArea”, url: “Area/{accountFriendlyId}/{campaignFriendlyId}/{controller}/{action}”, defaults: new { controller = “Home”, action = “Dashboard”, accountFriendlyId = RouteParameter.Optional, campaignFriendlyId = […]

ASP.NET MVC中的DropdownList – 未发布值

我在ASP MVC(Razor)中有一个表单,在这个表单中我有一个Textboxes …和一个 ,我想把这个select的选定选项(值)传递给控制器​​,就像其他信息一样。 文本框正确传输到控制器,它位于数据库中。 我在数据库中有一个名为NumberParticipant的字段,我希望通过我的Create控制器传输数据库: 我的代码: @using (Html.BeginForm()) { @Html.LabelFor(model => model.LocalNumber, new { @class = “control-label col-md-2” }) @Html.EditorFor(model => model.LocalNumber, new { htmlAttributes = new { @class = “form-control” } }) @Html.ValidationMessageFor(model => model.LocalNumber) 2 3 4 5 }

表达HelperResult以从列表中格式化项目

我正在做一个组件来格式化一个列表,它是一个扩展,我写了下面的代码,但是,在执行时,它给了我错误: 无法将lambda表达式转换为类型’System.Web.WebPages.HelperResult’,因为它不是委托类型 这是扩展名: public static MvcHtmlString FormatMyList(this HtmlHelper htmlHelper, IEnumerable list, Expression<Func> formatExp = null) { foreach (var item in list) { var itemFormated = formatExp.Compile().Invoke(item).ToString(); } return new MvcHtmlString(“”); } 查看电话: var test = Html.FormatMyList(list, formatExp: x => @ This is format of @x.Cambio to test @x.Fala ); 我已经尝试从HelperResult更改为动态,但也没有工作。 我不想像StackOverFlow中的一些post中那样只使用Func ,因为会有一些项,需要强类型化为ListType项。 我的视图中的格式可能不同,因此我无法将模板用于ListType。 有没有办法做到这一点,即使不使用表达式? 谢谢

ASP.NET MVC 4参数由正斜杠分隔“/”未正确传递args

我试图遵循许多站点使用的约定,该约定传递带有多个正斜杠的参数,而不是使用GET模型。 也就是说,我希望使用以下URL: http://www.foo.bar/controller/action?arg1=a&arg2=b&arg3=c 以这种方式: http://www.foo.bar/controller/action/a/b/c 我目前有(大多数)工作,使用以下内容: public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute(“{resource}.axd/{*pathInfo}”); routes.MapRoute( name: “Default”, url: “{controller}/{action}/{id}”, defaults: new { controller = “Home”, action = “Index”, id = UrlParameter.Optional } ); routes.MapRoute( name: “Sandbox”, url: “Sandbox/{action}/{*args}”, defaults: new { controller = “Sandbox”, action = “Index”, args = UrlParameter.Optional } ); } 但是,如果我传递类似的东西 http://www.foo.bar/Sandbox/Index/a 要么 […]

使用MVC4向特定客户端发送SignalR推送通知

我正在尝试将SignalR与MVC4 c#项目一起使用,仅向所选客户端发送推送通知。 为此,我通过在c#静态变量中存储’Context.ConnectionId’来使用’context.Clients.Client’,因为无法使用与signalr的会话}。 但是因为’contextConnectionId’是一个静态变量; 邮件仍然发送给所有客户:( 是否有任何替代会话与信号或任何其他优雅的方式来做到这一点? (发现很少相关的post,但没有具体的答案) 代码如下: 的javaScript $(document).ready(function (){ { var chat = $.connection.PushNotify; chat.client.addNewMessageToPage = function (type, message) { if(type == “something”) { alert(message); } } // Start the connection. $.connection.hub.start().done(function () { chat.server.send($(”).val(), $(”).val()); }); )} 在c#HUB [HubName(“PushNotify”)] public class PushNotify : Hub { public void Send(string name, string message) { […]

如何实现MVC 4 Web App服务器端互斥锁

我不是MVC专家,但我相信这是可行的; 但是,我不知道如何在MVC 4中做到这一点。 对于测试,我使用的是使用VS 2012创建网站时提供的默认Web应用程序。 为简单起见,考虑HomeController.Index()被多个用户完全同时命中(例如3)。 我想执行一个互斥的方法,因为一次只执行一个; 因此迫使他们连续。 我不在乎什么顺序。 我知道有关阻止页面的警告,并且所有内容都应该是异步的,但为此我需要阻止很短的时间。 public class HomeController : Controller { private String dosomething() { String str; str = “SomeValue”; //<– Will vary return str; } public ActionResult Index() { String str; // How do I do implement the following, preferably with a timeout to be safe Lock(dosomething); str = […]

确保控制器具有无参数的公共构造函数

我收到这个错误 尝试创建“AnalyticController”类型的控制器时发生错误。 确保控制器具有无参数的公共构造函数。 代码在测试环境中工作,但在生产服务器上不工作。 知道什么可能导致问题吗? 这是我的控制器 public class AnalyticController : ApiController { private AnalyticBLL analyticBLL = new AnalyticBLL(); // POST api/status public void Post(AnalyticDTO analyticDTO) { if (!analyticBLL.Register(analyticDTO)) helpers.BusinessLayer.CreateResponseException(analyticBLL.Errors); } }