Tag: asp.net mvc 4

如何将条件必需属性放入类属性以使用WEB API?

我只想放置与WEB API一起使用的条件必需属性 例 public sealed class EmployeeModel { [Required] public int CategoryId{ get; set; } public string Email{ get; set; } // If CategoryId == 1 then it is required } 我通过( ActionFilterAttribute )使用模型状态validation

IoC:Castle Windsor和WebAPI

我有一个使用Castle Windsor的MVC4站点,我想添加一些WebAPI调用,所以我开始在互联网上挖掘一下。 现在我不知道IoC的来龙去脉; 我按照教程了解了如何在我的项目中设置Castle Windsor,将IUnitOfWorkFactory和IApplicationService作为基本控制器中的公共属性注入,并在控制器构造函数中根据需要注入一些其他接口。 它游泳,所以我从来没有做过更多。 我正在WebAPI上阅读的所有地方,我都被告知DI使用Castle Windsor不能很好地工作,谈论IDependencyResolver和IDependencyScope 。 有几种解决方法和实现如何解决这个问题,但我不清楚的是究竟是什么问题。 包含代码片段,但假设您知道它们属于哪个类,以及如何调用它们,遗憾的是我没有。 另外,我在网上看到的所有例子都提到了一个独家的WebAPI项目,而不是一个明智地投入了几个ApiController的MVC4项目。我不知道这是怎样的,或者是否会影响到任何东西。 为什么我的标准控制器无法使用API​​控制器? 为了让WebAPI调用和标准Web调用在同一个应用程序中工作,需要做什么样的代码杂技?

EF 5条件映射

我在我的MVC应用程序中使用EF 5 Database第一种方法。 我的所有表都使用一个名为Deleted的字段,这是一个标记记录被删除的布尔字段。 我试图摆脱每次查询我的数据库时必须检查Deleted == false的要求。 这种非常直接的方法是在edmx文件中使用条件映射,其中EF始终返回未删除的数据。 这一切都很好。 但是,这个条件映射的问题在于,当我想允许用户从地址簿中删除例如地址的某些记录时,我无法访问EF中的删除字段,因为我在条件映射中使用它,因此我必须寻找另一个选项,允许用户删除记录。 我想的方法是创建一个处理删除查询的存储过程,并在我想删除记录时调用它。 有更好的方法吗? 是否可以使删除字段可访问,即使它在条件映射中使用?

如何使用动作filter在asp.net mvc中集中模型状态validation?

我在几个地方编写这段代码,并且总是重复这个逻辑: public ActionResult MyMethod(MyModel collection) { if (!ModelState.IsValid) { return Json(false);//to read it from javascript, it’s always equal } else { try { //logic here return Json(true);//or Json(false); } catch { return Json(false);//to read it from javascript, it’s always equal } } } 有没有办法使用动作filter,不重复try-catch ,询问模型是否有效并将return Json(false)作为ActionResult return Json(false) ?

没有类型为’IEnumerable ‘的ViewData项具有关键国家/地区

在mvc中的绑定下拉列表我总是得到这个错误没有类型’IEnumerable’国家的ViewData项目有关键我不知道如何排序 视图 @Html.DropDownList(“country”, (IEnumerable)ViewBag.countrydrop,”Select country”) 调节器 List coun = new List(); coun = ds.getcountry(); List item8 = new List(); foreach( var c in coun ) { item8.Add(new SelectListItem { Text = c.country, Value = c.countryid.ToString() }); } ViewBag.countrydrop = item8; return View(); 我不知道我错在哪里,任何人都可以提前帮助我

更新PartialView mvc 4

安永! 如何使用模型中的数据刷新部分视图? 第一次,当页面加载它正常工作时,但不是当我从Action调用它时。 我创建的结构如下: 在我看来的任何地方: @{ Html.RenderAction(“UpdatePoints”);} 我的PartialView“UpdatePoints”: Your points are @ViewBag.points 在控制器我有: public ActionResult UpdatePoints() { ViewBag.points = _Repository.Points; return PartialView(“UpdatePoints”); } 谢谢你的帮助! UPDATE 感谢你的帮助! 最后我按照你的建议使用JQuery / AJAX,使用模型传递参数。 所以,在JS中: $(‘#divPoints’).load(‘/Schedule/UpdatePoints’, UpdatePointsAction); var points= $(‘#newpoints’).val(); $element.find(‘PointsDiv’).html(“You have” + points+ ” points”); 在控制器中: var model = _newPoints; return PartialView(model); 在视图中 @Html.Hidden(“newpoints”, Model)

如何注册路由区域

我创建了具有3个不同区域的MVC应用程序。 (管理员,用户,新闻)这是我在App_Start目录中的RouteConfig.cs文件: public class RouteConfig { 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 }, namespaces: new[] { “TestMvcApplication.Controllers” } ); } } 这是我的AdminAreaRegisteration.cs文件: namespace TestMvcApplication.Areas.Admin { public class AdminAreaRegistration : AreaRegistration { public override string AreaName { get […]

将WebSockets与ASP.NET Web API一起使用

在ASP.NET Web API应用程序中使用原始websockets的首选方法是什么? 我们想在ASP.NET Web API应用程序的几个接口上使用二进制 WebSockets。 我很难确定应该如何完成这项工作,因为.NET似乎存在多个在线冲突和/或过时的实现。 有些示例似乎是像这样的ASP.NET,但我认为必须有一种方法在Web API框架中使用websockets。 据我所知,您可以在WebAPI中使用Signalr。 我以为使用Microsoft.AspNet.SignalR.WebSockets.WebSocketHandler可以工作,但我不知道如何将WebSocketHandler链接到Controller … class MyServiceController : ApiController { [HttpGet] public HttpResponseMessage SwitchProtocols (string param) { HttpContext currentContext = HttpContext.Current; if (currentContext.IsWebSocketRequest || currentContext.IsWebSocketRequestUpgrading) { // several out-dated(?) examples would // use ‘new MySocketHandler’ for ??? var unknown = new ???? currentContext.AcceptWebSocketRequest(unknown); return Request.CreateResponse(HttpStatusCode.SwitchingProtocols); } } […]

无法异步使用Ajax.BeginForm()上传文件

我正在尝试使用Ajax.BeginForm()上传文件,但它没有用完。 我的观点包含: @using (Ajax.BeginForm(“UploadFile”, null, new AjaxOptions { HttpMethod=”POST”, UpdateTargetId = “result” }, new { enctype = “multipart/form-data” })) { Upload New File</label> } 和相应的控制器是: [HttpPost] public string UploadFile(FormCollection formData) { HttpPostedFileBase file=null; try { file = Request.Files[0]; } catch { } if ( file!=null && file.ContentLength > 0) { file.SaveAs(string.Concat( AppDomain.CurrentDomain.BaseDirectory, Path.GetFileName(file.FileName))); return "Successfully […]

无法通过SignalR Hub访问会话信息。 我的设计是错的吗?

我刚刚发现你无法访问SignalR Hub中的当前会话。 简化了我的场景:我试过写聊天。 当前用户的名称保留在会话中。 我已经使用SignalR来更新(一组连接)每个新消息。 现在我看到我无法通过集线器访问当前用户的名称。 我想可能会有一些解决方法,但实现我的设计错了吗? 我不应该为此目的使用SignalR吗? 或者我不应该以这种方式使用Session ?