Tag: asp.net mvc

ASP.NET MVC中的模型关系

我最近开始评估ASP.NET MVC。 虽然为仅具有原始属性的模型创建控制器和视图非常简单快捷(如官方页面中的入门video中所示),但我没有找到任何使用复杂类型引用的好方法。 比方说,我有这些模型: public class Customer { public int Id { get; set; } public string Name { get; set; } public Address Address { get; set; } public IList Orders { get; set; } } public class Address { public int Id { get; set; } public string ….. ….. } public class […]

为什么Web API不会反序列化,但JSON.Net会?

Web API如何无法反序列化JSON.Net反序列化的对象? 这是Web API控制器: public void Put(EditorSubmissionMainView ajaxSubmission) { // ajaxSubmission: EditorSubmissionMainView with all values (‘data’ also == null) string json = “{\”id\”:\”row_1377\”,\”data\”:{\”ROTATION\”:\”1\”,\”EQUIPMENT\”:[{\”id\”:\”6\”},{\”id\”:\”8\”}],\”NOTES\”:\”\”}}”; EditorSubmissionMainView foo = Newtonsoft.Json.JsonConvert.DeserializeObject(json) as EditorSubmissionMainView; // foo is a EditorSubmissionMainView but properly deserialized. } 这是由Fiddler捕获并格式化的JSON: { “id”: “row_1377”, “data”: { “ROTATION”: “1”, “EQUIPMENT”: [{ “id”: “6” }, { “id”: “8” }], […]

具有任意深度的ASP.NET MVC动态路由和动作链接

我想用ASP.NET MVC组建一个论坛/留言板。 在这些类型的论坛上很常见的是分层板类别,例如: -一般讨论;一般交流 -技术支援 – 网站技术支持 – 产品技术支持 —产品A技术支持 —产品B技术支持 然后,每个类别下面的主题和消息属于这些主题。 我主要关注的是1.)到达正确的位置,给定URL,2。)不包括​​我的URL中的大量不必要的信息,以及3.)能够从代码重新创建URL。 我想要一个像这样的URL: mysite.com/Forum/ – 论坛索引 mysite.com/Forum/General-Discussion/ – “一般性讨论”的董事会索引 mysite.com/Forum/Technical-Support/Product/Product-A/ – “产品A技术支持”的主板索引 mysite.com/Forum/Technical-Support/Website/Topic1004/ – “网站技术支持”主板中ID为1004的主题主题索引 mysite.com/Forum/Technical-Support/Website/Topic1004/3 – 主题ID为1004的第3页 现在,我已经从中排除了动作名称,因为它们可以根据我的位置来推断。 我的数据库中的每个Board实体都有一个“UrlPart”列,该列已编制索引,因此我希望能够对该表执行相对快速的查询以确定我的位置。 问题是:为了找出正确的位置,我应该使用自定义路由处理程序,自定义路由绑定器,还是应该创建模糊的路由规则? 这个建议看起来相当不错,但它看起来似乎很多工作没有什么好处: ASP.NET MVC自定义路由搜索 这似乎表明创建模型绑定会更容易: MVC Dynamic Routes 为了实现#3,我将不得不创建自己的自定义URL生成逻辑,对吧?

在MVC4网站上持续运行后台进程

我有一个运行的ASP.NET MVC4网站,现在我需要一些不断运行的后台任务。 但这有可能吗? MVC4网站是一种通知系统。 其他网站可以在此网站上注册Callback URL,并且该网站应在指定的时间间隔内触发该回调URL。 所以,例如每小时一次。 通常,我访问网页时,我的网站代码才会生效。 但是为了完成这项工作,我需要一种方法让我的ASP.NET网站不断在后台运行。 因此,它可以进行检查并在必要时进行HTTP调用。 重要的是,其他网站可以通过http Web请求注册自己的Callback url,而不是通过套接字。 在ASP.NET MVC Web应用程序中是否可以这样? 或者我需要一种不同的方法吗?

如何从asp.net MVC 4中的按钮单击调用控制器

请我在MVC网站上工作,我有一个搜索页面和索引页面上的另一个搜索表单。 当我从索引页面单击搜索按钮时,我想调用相同的搜索页面控制器。 下面是我的按钮在索引页面上的方式。 <button class="btn btn-info" type="button" id="addressSearch" onclick="location.href=''”> Search 列表是我的搜索搜索页面中的操作,搜索是控制器名称。 当我单击上面的按钮时,它将返回表单中的url http:// localhost:52050 / 显示不良请求。 我怀疑它来自我的路由,我不知道如何实现这一点,请任何帮助将不胜感激。 以下是我的路由方式 routes.MapRoute( name: null, url: “Page{page}”, defaults: new { Controller = “Search”, action = “List” } ); routes.MapRoute( name: “Default”, url: “{controller}/{action}/{id}”, defaults: new { controller = “Home”, action = “Index”, id = UrlParameter.Optional } );

Server.MapPath在当前上下文中不存在

在我的MVC4项目中,我有命名空间 prj.MVC4.Controllers 我正在使用Server.MapPath(..)没有问题和 prj.MVC4.Models Server.MapPath(…)在当前上下文中不存在。 我知道Server.MapPath驻留在System.Web并且命名空间和程序集都使用System.Web添加到类中, System.Web.dll被添加到prj中。 在Ctrl +上。 。 我将Microsoft.SqlServer作为建议的命名空间添加。 如何解决这个问题?

根据链接MVC4更改文化

我对MVC中的文化变化有好奇心。 我试过两种方式,但显然我错了。 在我的Web.config中,我有: 这就是我试图改变线程文化的方式: @Html.ActionLink(“Eng”, “ChangeCulture”, “Home”, new { lang=”en-US”}, new { @class = “languageSelectorEnglish” }) 第一种方法 我有以下控制器: public void ChangeCulture(string lang) { Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo(lang); Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(lang); Response.Cookies.Remove(“Language”); var langCookie = new HttpCookie(“Language”); langCookie[“Language”] = lang; langCookie.Value = lang; langCookie.Expires = System.DateTime.Now.AddDays(21); Response.Cookies.Add(langCookie); Response.Redirect(Request.UrlReferrer.ToString()); } 第二种方法 public ActionResult ChangeCulture(string lang) { Thread.CurrentThread.CurrentCulture = […]

ModelState.IsValid做什么?

当我做一个create方法时,我在参数中绑定我的对象,然后检查ModelState是否有效,所以我添加到数据库: 但是当我在添加到数据库之前需要更改某些内容时(在我更改它之前, ModelState无效,所以我必须这样做)为什么模型状态仍然无效。 这个function究竟检查了什么? 这是我的例子: [HttpPost] [ValidateAntiForgeryToken] public ActionResult Create([Bind(Include = “EncaissementID,libelle,DateEncaissement,Montant,ProjetID,Description”)] Encaissement encaissement) { encaissement.Montant = Convert.ToDecimal(encaissement.Montant); ViewBag.montant = encaissement.Montant; if (ModelState.IsValid) { db.Encaissements.Add(encaissement); db.SaveChanges(); return RedirectToAction(“Index”, “Encaissement”); }; ViewBag.ProjetID = new SelectList(db.Projets, “ProjetId”, “nomP”); return View(encaissement); }

MvcMiniProfiler结果请求在Asp.Net MVC应用程序中提供404

我试图在我的Asp.Net MVC应用程序中使用MvcMiniProfiler。 我安装了最新的NuGet包,并将维基页面中的所有代码添加到Application_BeginRequest() , Application_AuthenticateRequest()和我的视图中。 加载页面后,所有迷你探查器的javascript文件都被包含在内并从服务器上正确下载,但当它尝试获取结果时Chrome显示: GET http://localhost:59269/mini-profiler-results?id=59924d7f-98ba-40fe-9c4a-6a163f7c9b08&popup=1 404 (Not Found) 我假设这是因为没有设置MVC的路由以允许/mini-profiler-results但是我找不到办法做到这一点。 查看Google代码页,他们的示例应用程序的Global.asax.cs文件经历了多次更改,一次使用MvcMiniProfiler.MiniProfiler.RegisterRoutes() ,第二次使用MvcMiniProfiler.MiniProfiler.Init() ,第三次什么都不做的风格。 前面提到的两个函数不存在,所以我假设它们已被逐步淘汰。 此时我不确定如何修复此错误并在我的应用程序中使用分析器。 有任何想法吗? 我的Global.Asax.cs文件如下所示: public class Global : System.Web.HttpApplication { protected void Application_BeginRequest() { MvcMiniProfiler.MiniProfiler.Start(); } protected void Application_AuthenticateRequest(Object sender, EventArgs e) { // Only show profiling to admins if (!Roles.IsUserInRole(Constants.AdminRole)) MvcMiniProfiler.MiniProfiler.Stop(discardResults: true); } protected void Application_Start(object sender, EventArgs e) […]

使用Instagram API在.NET中使用OAuth 2.0

我正在努力使用Instagram API,我被困在他们的OAuth的第2步。 我有一个代码从他们的重定向回到我,但然后他们希望我做一个如下参数的post… curl \ -F ‘client_id=CLIENT-ID’ \ -F ‘client_secret=CLIENT-SECRET’ \ -F ‘grant_type=authorization_code’ \ -F ‘redirect_uri=YOUR-REDIRECT-URI’ \ -F ‘code=CODE’ \ https://api.instagram.com/oauth/access_token 我将其实现为ASP.NET MVC 3解决方案。 我试着像这样实施post…… WebRequest request = HttpWebRequest.Create(“https://api.instagram.com/oauth/access_token”); request.Method = “POST”; request.Headers.Add(“client_id”, “sdlf0982jiejfopijfp92jjiwoijf90”); request.Headers.Add(“client_secret”, “39993939393939393939393939393”); request.Headers.Add(“grant_type”, “authorization_code”); request.Headers.Add(“redirect_uri”, “http://localhost:34962/Home/Auth”); request.Headers.Add(“code”, 111111); var response = request.GetResponse(); return View(); 这给了我一个400错误,说“client_id是必需的”。 我已经包含了client_id,但我显然没有正确实现它。 执行OAuth第二站的“最佳实践”方法是什么?