Tag: asp.net mvc

ASP.Net Web Api – ApiExplorer不包含任何ApiDescriptions

我正在尝试在我的Web服务的控制器中实现一个Options方法,该方法将返回一个消息,其中包含与控制器关联的URI端点的有效HTTP方法。 我的Options方法看起来像这样: public HttpResponseMessage Options() { var resp = new HttpResponseMessage(); resp.Content = new StringContent(“”); var apiExplorer = GlobalConfiguration.Configuration.Services .GetApiExplorer(); foreach (ApiDescription api in apiExplorer.ApiDescriptions) { resp.Content.Headers.Add(“Allow”, api.HttpMethod.Method); } return resp; } 我在具有Get,Post和Delete方法的控制器内部的全新Web Api项目(暗示:未改变的路由)中尝试了上述方法。 正如预期的那样,返回带有“Allow:GET,POST,DELETE”的响应。 但是,我遇到了麻烦,将其添加到我正在处理的更大的项目中。 在较大的项目中,ApiExplorer中的ApiDescriptions列表不包含任何元素。 为什么是这样? 我怀疑这是由于已经实现的自定义路由,尽管怀疑的唯一依据是以下链接: http://forums.asp.net/t/1821651.aspx/1 有没有其他人经历过这个空的ApiDescription列表? 如果是这样,你找到了补救措施吗? 注意:我使用的是MCV 4 RC

Windows 10更新后,MVC应用程序中断

今天早上我醒来时发现我服务器上的MVC 4 Web应用程序坏了。 错误消息是: An exception of type ‘System.IO.FileNotFoundException’ occurred in mscorlib.dll but was not handled in user code. Additional information: Could not load file or assembly ‘Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed’ or one of its dependencies. The system cannot find the file specified. 我打开我的VS项目并从代码运行它(所以在另一台计算机上),发生了同样的错误! 我检查了我的服务器日志,发现更新是在凌晨5:06自动安装的。 其中一个更新是由安装程序包AspNetMVC4.msi完成的。 一分钟后,我的Web应用程序上的第一个错误开始流入。 在我的开发笔记本电脑上,同样的安装程序昨天(10月15日)下午1:10:10运行。 两台计算机上的问题相同。 我从未听说过Newtonsoft.Json(但现在我发现它是什么)。 看起来好像其中一个MVC dll(不太可能)或其中一个包dll(更有可能)引用了Newtonsoft。 我试图从nuget安装Newtonsoft。 这确实有一些影响,错误从FileNotFound更改为FileLoadException: An […]

允许空外键GUID

我想创建一个类似GUID的可空外键,如下所示 [ForeignKey(“CreatedBy”)] [Display(Name = “Created by”)] public Guid? CreatedById { get; set; } public virtual User CreatedBy { get; set; } 但是当我添加迁移并更新数据库时,它不会使它在SQL中的表设计中允许为null。 还有另一种方法可以让它首先通过模型允许null吗?

如何将javascript对象传递给C#MVC 4控制器

在MVC4中,如何将javascript对象传递给AJAX中的C#控制器? 最后我尝试了这个,但它没有用。 Javascript客户端: var myData = {Propr1: ”, Propr2: ”}; $.ajax({ type: ‘POST’, data: JSON.stringify(myData), url: ‘/Home/SubmitMyData’, contentType: ‘application/json’, dataType: ‘json’, success: alert(‘Youhou’), error: alert(‘not good’) }); C#服务器端方法: public ActionResult SubmitMyData(MyParamModel myParam) { // Do my stuff here with my parameter return View(); } public class MyParamModel { string Prop1 { get; set; } string […]

.Net框架,用于管理单独机器上的后台运行流程

我有一个asp.mvc应用程序驻留在服务器上。从这个应用程序,我想启动一个有点长时间运行的进程,将是资源密集型操作。 所以我想要做的是我希望有一些像3这样的用户代理将在3台机器上运行,这个用户代理只会使用各自机器的资源。 就像在Hadoop中一样,我们有主节点和集群,其中任务在单个集群上运行,并且有1个主节点跟踪所有这些集群。 在Azure中,我们有运行任务的虚拟机,如果需要,Azure可以通过启动新实例来自动扩展以加速任务。 所以我想创建这样的基础设施,我可以从mvc应用程序向3个用户代理提交我的任务,我的应用程序将跟踪这些代理,例如哪个代理是免费的,哪个是被占用的,哪个不是这样的。 我希望从每个用户代理接收进度并在我的MVC应用程序上显示。 在.net中是否有任何框架可以管理这些后台运行操作(跟踪,启动,停止等等)或者应该采用什么方法? 更新:我不想为这个长时间运行的操作加载大量服务器,而且我想跟踪这个长时间运行的进程,就像他们正在做的那样,错误等等。 以下是我正在思考的方法,我不知道哪个更有意义: 1)以2-3计算机内部代理的forms安装Windows服务,以利用resp资源并打开与此代理的tcp / ip连接,除非并且直到长时间运行的过程完成。 2)使用hangfire在IIS线程之外运行这个长时间运行的进程,但我想这会将负载放在服务器上。 我想知道上述方法可能存在的问题,以及是否有更好的方法。

带有一个必需参数和一个可选参数的ASP.NET MVC路由?

在过去一个月左右的时间里,我一直在研究一个大型MVC应用程序,但这是我第一次需要定义一个自定义路由处理程序,而且我遇到了一些问题。 基本上我有两个参数要通过。 第一个是必需的,第二个是可选的。 我在这里听到这个答案。 这是我的自定义路线: routes.MapRoute( “MyRoute”, “{controller}/{action}/{param1}/{param2}”, new { controller = “MyController”, action = “MyAction”, param1 = “”, param2 = “” // I have also tried “UrlParameter.Optional” here. } ); 我的动作方法签名: public ActionResult MyAction(string param1, string param2) 如果我尝试URL http://[myserver]/MyController/MyAction/Test1/Test2那么它就像我期望的那样工作,param1 =“Test1”和param2 =“Test2” 如果我尝试URL http://[myserver]/MyController/MyAction/Test1那么两个参数都为null。 希望有人可以告诉我这里我做错了什么,因为我迷路了。

ASP.NET MVC显示日期没有时间

我的模型字段以下列方式装饰: [DataType(DataType.Date)] [Display(Name = “Date of birth”)] public string DateOfBirth { get; set; } 当我想使用以下代码在视图中显示值时: m.DateOfBirth) %> 问题是日期与其时间值一起显示。 我想知道为什么它不考虑DateType属性并且只显示没有时间的日期值。 我知道我可以为DateTime创建一个显示模板,但在其他情况下,除了出生日期之外,我想要显示时间和日期。 如何解决问题?

asp.net mvc客户端validation不起作用?

出于某种原因,我的客户端validation似乎不起作用: 这是我的HTML: @using (Html.BeginForm(“Create”, “Home”, FormMethod.Post)) { @Html.ValidationSummary(true) Select Client_ID: @foreach (var item in Model.ClientId) { @item } @Html.LabelFor(model => model.UserModel.name) @Html.EditorFor(model => model.UserModel.name) @Html.ValidationMessageFor(model => model.UserModel.name) @Html.LabelFor(model => model.UserModel.password) @**@ @Html.EditorFor(model => model.UserModel.password) @Html.ValidationMessageFor(model => model.UserModel.password) @Html.LabelFor(model => model.UserModel.email) @**@ @Html.EditorFor(model => model.UserModel.email) @Html.ValidationMessageFor(model => model.UserModel.email) Select: Company End-User 这是我的模型: public class CreateUserModel { […]

在asp net mvc 5中使用Session变量进行授权

所以我的项目要求发生了变化,现在我认为我需要构建自己的动作filter。 所以,这是我当前的登录控制器: public class LoginController : Controller { // GET: Login public ActionResult Index() { return View(); } [HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public ActionResult Login(LoginViewModel model) { string userName = AuthenticateUser(model.UserName, model.Password); if (!(String.IsNullOrEmpty(userName))) { Session[“UserName”] = userName; return View(“~/Views/Home/Default.cshtml”); } else { ModelState.AddModelError(“”, “Invalid Login”); return View(“~/Views/Home/Login.cshtml”); } } public string AuthenticateUser(string username, string password) […]

entity framework包括filter子集合

我在LINQ查询中为包含的项添加一些过滤条件有些困难。 我的查询是这样的 var item = _Context.Order.Include(“Inner”) .Include(“Inner.first”) .Include(“Inner.second”) .Where(x => ( !(x.IsDeleted) && (x.IsActive) && (x.itemid == id))).FirstOrDefault(); 在上面的代码中,“Inner”是另一个项目列表。 现在我需要过滤内部项目。 我只需要内部项目,过滤条件为inner.isDeleted = true。 查询应该返回一个类, public class Order { public string Name { get; set; } public List Inner{ get; set; } public bool IsDeleted { get; set; } } 和InnerDetails类一样 public class InnerDetails { public […]