Tag: asp.net mvc

ASP.NET MVC是无状态的吗?

我听说MVC .NET是无状态的。 这有什么意义,为什么MVC是无国籍的。

在使用MVCContrib对unit testingMVC 3控制器和视图进行unit testing时,向RouteData添加键和值

好的,所以我使用MVCContrib TestHelper对我的控制器进行unit testing,效果很好。 和很多人一样,通过unit testing我真的是指这里的集成测试,我想至少确保我的视图在没有错误的情况下呈现给定模型提供…否则我会错过一大堆与模型基本相关的错误虽然我正在测试控制器(如果模型属性为null,则视图不呈现)。 无论如何,我开始试图弄清楚如何做到这一点(也就是谷歌搜索如何做到这一点)。 看起来最简单的方法是构造一个HTMLHelper并让它只渲染视图(在这种情况下是部分的)。 不幸的是,当我尝试使用我的模拟HTMLHelper时,它抱怨说路由数据中没有控制器名称。 果然,我看起来并没有填充控制器RouteData。 不幸的是,RouteData.Values RouteValueDictionary是只读的,所以我不能只提供必要的值。 我没有结合HTMLHelper的想法来解决实际渲染视图作为测试的一部分的问题,所以请随意提出替代方案,但请不要建议我使用Selenium,W​​atin或其他UI测试我的视图测试工具…我希望控件能够执行一些操作,例如操作和恢复某些测试的状态和数据信息,这是基于UI的测试无法做到的。 这是我目前用来尝试渲染部分的代码: public class FakeView : IView { #region IView Members public void Render(ViewContext viewContext, System.IO.TextWriter writer) { throw new NotImplementedException(); } #endregion } public class WebTestUtilities { public static void prepareCache() { SeedDataManager seed = new SeedDataManager(); seed.CheckSeedDataStatus(); } public static string RenderRazorViewToString(string […]

无法加载文件或程序集Newtonsoft.json.dll

“无法加载文件或程序集’Newtonsoft.Json,Version = 4.0.3.0,Culture = neutral,PublicKeyToken = 30ad4fe6b2a6aeed’或其依赖项之一。 定位的程序集的清单定义与程序集引用不匹配。 (HRESULTexception:0x80131040)“。 发布到twitter需要’NewtonsoftJson.dll’程序集。使用的版本是4.0.3.0。 并且相同的程序集(但是diff版本4.0.0.0)被用作facebook C#api(dll)的依赖程序集。 但是,上述程序集(4.0.3.0)对两种情况都不起作用(即发布到twitter和登录facebook)。 为了解决这个问题,创建了一个单独的项目,用于发布到twitter并单独引用程序集(4.0.3.0)(在twitter发布的项目中)。另外一个版本(4.0.0.0)作为参考添加在facebook的主项目中但仍然是错误来了。如果Twitter项目被禁用并运行,那么Facebook登录工作正常和副维拉。 我做了很多研究并尝试了以下方法。 删除临时asp.net文件清理解决方案重启计算机 甚至试图从gac卸载程序集(但它没有在那里注册)。 请帮助我,因为它无法正常工作。 谢谢,S

DataAnnotations的FileExtensions属性在MVC中不起作用

我试图在MVC中使用HTML FileUpload控件上传文件。 我想validation该文件只接受特定的扩展名。 我已经尝试使用DataAnnotations命名空间的FileExtensions属性,但它不起作用。 见下面的代码 – public class FileUploadModel { [Required, FileExtensions(Extensions = (“.xlsx,.xls”), ErrorMessage = “Please select an Excel file.”)] public HttpPostedFileBase File { get; set; } } 在控制器中,我正在编写如下代码 – [HttpPost] public ActionResult Index(FileUploadModel fileUploadModel) { if (ModelState.IsValid) fileUploadModel.File.SaveAs(Path.Combine(Server.MapPath(“~/UploadedFiles”), Path.GetFileName(fileUploadModel.File.FileName))); return View(); } 在View中,我写了下面的代码 – @using (Html.BeginForm(“Index”, “FileParse”, FormMethod.Post, new { enctype = “multipart/form-data”} […]

Asp MVC Action链接绝对url

我有一组显示给特定用户的视图。 这些是我从我们的应用程序中的其他视图复制的视图,并稍微更改了它们。 在这些视图中我使用的是Html.Action链接,但是我需要这些来返回绝对URL而不是相对。 我知道有额外的参数可以用来获得这种效果,但我不认为它可以改变我所有视图中的所有链接。 理想情况下,我想在一个地方进行更改,并根据需要渲染我的所有链接。 当然必须有我可以设置的东西,或者我可以覆盖的function来实现这一点。

下拉列表更好地作为ViewBag或模型C#/ .NET MVC4的一部分

可能很简单,但我似乎错过了一些东西。 两种型号: public class Hardware { [Required] public int Id { get; set; } public int SerialNum { get; set; } public int ProductNum { get; set; } public string Notes { get; set; } public DateTime PurchaseDate { get; set; } public DateTime WarrantyExpiration { get; set; } public virtual Manufacturer Manufacturer { get; […]

IIS在第一个请求中对URL中的双重编码正斜杠的处理方式与后续请求的处理方式不同

最近,我的团队被要求为ASP.NET MVC应用程序实现HttpModule,该应用程序处理IIS 7和.NET 3.5上的双重编码URL。 这是问题的症结所在: 我们有时会获得具有双重编码正斜杠的URL,如下所示: http://www.example.com/%252fbar%5cbaz/foo 还有其他格式我们必须处理,但它们都有一些共同点,它们有一个双重编码的正斜杠。 为了解决这个问题,我们编写了一个HttpModule,它仅在URL具有双重编码的正斜杠时起作用,并且我们将其重定向到一个合理的URL。 细节并不重要,但有两个位: 我们无法控制这些URL具有双重编码正斜杠的事实 我们还没有对.NET 4.0进行过分析,也没有立即开始。 这是问题所在: IIS启动后的第一个请求显示的URL与第二个请求不同。 如果我们使用上面示例中的URL,则对IIS的第一个请求如下所示: http://www.example.com/bar/baz/foo 第二个请求看起来像: http://www.example.com/%252fbar%5cbaz/foo 这是通过在调试时检查Application.Request.Url.AbsolutePath属性来完成的。 这是应该重现问题的最小代码示例(创建一个新的MVC应用程序,并注册以下HttpModule): public class ForwardSlashHttpModule : IHttpModule { internal IHttpApplication Application { get; set; } public void Dispose() { Application = null; } public void Init(HttpApplication context) { Initialize(new HttpApplicationAdapter(context)); } internal void Initialize(IHttpApplication context) { […]

如何在重定向,asp.net mvc3之前确保控制器和操作存在

在我的一个控制器+动作对中,我从另一个地方获取另一个控制器和动作的值作为字符串,我想重定向我当前的动作。 在进行重定向之前,我想确保我的应用程序中存在控制器+操作,如果没有,则重定向到404.我正在寻找一种方法来执行此操作。 public ActionResult MyTestAction() { string controller = getFromSomewhere(); string action = getFromSomewhereToo(); /* At this point use reflection and make sure action and controller exists else redirect to error 404 */ return RedirectToRoute(new { action = action, controller = controller }); } 我所做的就是这个,但它不起作用。 var cont = Assembly.GetExecutingAssembly().GetType(controller); if (cont != null && cont.GetMethod(action) […]

在MV203项目的VS2013中有限的Intelliesense

我最近安装了vs 2013专业版,并在其中打开了我的一个侧面项目应用程序。 该项目是使用剃刀视图引擎的MVC3应用程序。 我注意到在编辑视图(cshtml)时,我无法访问我在2012年习惯的intellisense。我立刻注意到的例子是@ Url.Content()和@Viewbag。 代码仍然编译并运行,只是没有intellisense。 有点搞砸了我想我应该检查升级日志,果然我找到了…… “用于Razor的Intellisense(CSHTML和VBHTML)文件仅限于HTML标记。有关如何升级MVC 3项目的其他信息,请参阅http://go.microsoft.com/fwlink/?LinkID=317645 。” 提供的链接只是告诉您从mvc3升级到mvc4。 我的问题是:这是我唯一的选择吗? 为了在较旧的mvc3项目上使用VS2013,我将不得不升级它们或者vs2013是否支持mvc razor文件的完整intellisense?

FormsAuthentication.SetAuthCookie在MVC 5中没有

我创建了一个全新的ASP.NET MVC 5项目,用FormsAuthentication.SetAuthCookie测试[Authorize]属性。 我只是在一个动作中设置一个cookie(在我的Home控制器中): public ActionResult About() { FormsAuthentication.SetAuthCookie(“someUser”, false); 我限制访问另一个: [Authorize] public ActionResult Contact() { 当我启动我的网页并导航到/home/contact ,我被正确地重定向到登录页面。 然后我转到/home/about ,获取我的cookie,然后返回联系页面。 但是我仍然被重定向到登录页面 – cookie没有validation/授权我。 在调试器中,当我多次加载About页面时, HttpContext.User.Identity.IsAuthenticated == false (也就是说,即使在设置了auth cookie之后,它也从未将我视为已经过身份validation)。 这里必须要做一些额外的步骤吗? 我不应该为基本身份validation设置自己的IPrincipal,我应该吗?