Tag: asp.net mvc

ASP.NET MVC Html.Encode – 新行

Html.Encode似乎只是简单地调用HttpUtility.HtmlEncode来用它们的转义序列替换一些html特定字符。 但是,这并未考虑如何解释新行和多个空格(标记空白)。 因此,我为用户提供了一个文本区域,用于输入纯文本信息块,然后在另一个屏幕上显示该数据(使用Html.Encode ),新的行和间距将不会被保留。 我认为有2种选择,但也许有人会提出更好的第三种选择。 一种选择是只编写一个使用HtmlEncode的静态方法,然后将结果字符串中的新行替换为和多个空格的组,并使用  另一种选择是在我的样式表中混淆white-space: pre属性 – 但是我不确定当Html帮助方法包含新行和Tab键以使页面源非常漂亮时是否会产生副作用。 是否有第三个选项,如全局标志,事件或方法覆盖,我可以用来改变html编码的方式而不必重做html帮助器方法?

Asp.Net MVC4显示CheckboxList

我搜索了很多,只花了3天时间搜索和尝试不同的技术(在stackoverflow等),但我找不到在asp.net mvc中实现checkboxlist的解决方案。 最后我将我的问题发布到stackoverflow; 所以,我的模型看起来像这样; 我的模型的多对多关系(1个类别可能包含许多项目,项目可能属于许多类别) 我的控制器; [HttpGet] [Authorize(Roles = “Admin”)] public ActionResult ProjectAdd() { return View(); } 我的看法; @using (Html.BeginForm()) { @Html.ValidationSummary(true) Add New Project @Html.LabelFor(model => model.ProjectHeading) @Html.EditorFor(model => model.ProjectHeading) @Html.ValidationMessageFor(model => model.ProjectHeading) @Html.LabelFor(model => model.ProjecctUrl) @Html.EditorFor(model => model.ProjecctUrl) @Html.ValidationMessageFor(model => model.ProjecctUrl) @Html.LabelFor(model => model.ProjectLongDescription) @Html.EditorFor(model => model.ProjectLongDescription) @Html.ValidationMessageFor(model => model.ProjectLongDescription) @Html.LabelFor(model => model.PromoFront) […]

在不创建数据库的情况下,将Mini-Profilier与EF 4.3和MVC 4配合使用

我有一个问题,我们在现有数据库中使用EF 4.3 Code First。 我想使用带有EF的Mini-Profiler并打电话 MvcMiniProfiler.MiniProfilerEF.Initialize(); 但是,由于我们实际上并未创建任何表,因此dbo .__ MigrationHistory和dbo.EdmMetadata表不存在。 分析器最终崩溃,因为它们不存在。 有没有办法让探查器忽略这些EF Code First特定的表? 谢谢! 编辑: 这些是我得到的例外:(它们分开来) Invalid object name ‘dbo.__MigrationHistory’. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) at System.Data.SqlClient.SqlDataReader.ConsumeMetaData() at System.Data.SqlClient.SqlDataReader.get_MetaData() at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) at […]

如何将数据从asp.NET MVC传递到Angular2

将数据从ASP.NET MVC控制器传递到Angular 2.0组件的最佳方法是什么。 例如,我们使用ASP.NET MVC模型,并希望将它的JSON版本发送给Angular,因此我们可以在Angular中使用它。 在控制器为视图提供服务的那一刻,我们已经能够将一些数据推送到Angular2(模型)。 因此不需要额外的AJAX调用来获取该数据。 但是我正努力将它“注入”Angular组件。 你怎么做到这一点? 对此有什么好的参考? 你可能已经注意到了,我对Angular2很新。 我的index.cshtml看起来像这样。 Welcome to the Angular 2 components! Loading… 亲切的问候, 抢

如何从Request.Form获取所有元素值,而无需使用.GetValues(“ElementIdName”)确切指定哪个元素值

目前使用以下代码创建一个字符串数组(元素),其中包含来自Request.Form.GetValues(“ElementIdName”)的所有字符串值,问题是为了使其工作,我的View中的所有下拉列表必须具有出于显而易见的原因,我不希望他们使用相同的元素ID名称。 所以我想知道是否有任何方法让我从Request.Form获取所有字符串值而不显式指定元素名称。 理想情况下,我只想获取所有下拉列表值,我在C#中不是太热,但是没有办法让所有元素ID以“List”+“**”开头,所以我可以命名我的列表List1 ,List2,List3等 谢谢.. [HttpPost] public ActionResult OrderProcessor() { string[] elements; elements = Request.Form.GetValues(“List”); int[] pidarray = new int[elements.Length]; //Convert all string values in elements into int and assign to pidarray for (int x = 0; x < elements.Length; x++) { pidarray[x] = Convert.ToInt32(elements[x].ToString()); } //This is the other alternative, painful way which I […]

Owin,在身份validation请求中传递自定义查询参数

我们有自己的OpenID Connect Provider。 我们希望使用Owin中间件在身份validation请求中传递自定义查询参数。 我们无法找到使用Microsoft.Owin.Security.OpenIdConnect程序集实现此方法的方法。 甚至我们也找不到如何向Authentication Request添加标准请求参数(例如“ login_hint parameter”)。 例如,Google有“ login_hint ”和“ hd ”参数( https://developers.google.com/accounts/docs/OAuth2Login#sendauthrequest ),我们希望拥有几乎相同的参数。 但我们甚至无法找到如何使用Owin将这些参数发送给Google。 试过这段代码: var googleOptions = new GoogleOAuth2AuthenticationOptions() { ClientId = “…”, ClientSecret = “…”, }; app.UseGoogleAuthentication(googleOptions); … public ActionResult ExternalLogin(string provider) { var ctx = Request.GetOwinContext(); var properties = new AuthenticationProperties(); properties.Dictionary.Add(“login_hint “, “myemail@gmail.com”); properties.Dictionary.Add(“hd”, “hd”); ctx.Authentication.Challenge(properties, provider); return […]

多个DbContext的存储库和工作单元模式的最佳实践

我计划使用ASP.NET MVC和Entity Framework 6(Code First / POCO)开发Web应用程序。 我还想在我的应用程序中使用通用存储库和工作单元模式。 此应用程序连接到两个以上的数据库,因此,我必须在应用程序中使用多个DbContext。 public class ContextOne : DbContext { public DbSet public DbSet } public class ContextTwo : DbContext { public DbSet public DbSet } public class ContextThree : DbContext { public DbSet public DbSet } public interface IRepository where T : DbContext { void Add(T entity) where T […]

当文件实际存在于指定位置时的MVC路由

所以我在IIS 7下运行的MVC 3应用程序中有这样的路由: routes.MapRoute( “VirtualTourConfig”, “virtualtour/config.xml”, new { controller = “VirtualTour”, action = “Config” } ); 诀窍是文件实际存在于/virtualtour/config.xml中。 似乎请求只是在该位置返回xml文件而不是命中路径,该路由处理XML,进行一些更改并返回自定义XmlResult。 有关如何告诉我的应用程序命中路由而不是文件存在于磁盘上的实际文件的任何建议? 编辑:看来我可以使用routes.RouteExistingFiles = true; 在Global.asax的RegisterRoutes方法中告诉应用程序忽略磁盘上的文件。 但是,这会在全局范围内设置标志并在应用程序中中断许多其他请求。 例如,我仍然希望调用/assets/css/site.css来返回CSS文件,而无需为每个静态资产专门设置路由。 那么现在的问题是,有没有办法在每个路由的基础上做到这一点?

Asp.Net中Task.Run和QueueBackgroundWorkItem之间的区别

究竟有什么区别 Task.Run(() => { LongRunningMethod(); }); 要么 HostingEnvironment.QueueBackgroundWorkItem(clt => LongRunningMethod()); 我在Asp.Net MVC应用程序上进行了测试,在该应用程序中,我在使用Task.Run或QBWI调用的异步任务中继续在文本文件中写入一行约10分钟。 使用Task和QBWI都可以。 我的异步方法一直写入该文件,直到10分钟没有任何问题。 我没有观察到IIS对其回收的干扰。 那么QueueBackgroundWorkItem有什么特别之处呢?

生成链接时如何忽略当前路由值?

这个问题类似于asp.net mvc Html.ActionLink(),它保留了我不想要的路由值 ,但有一个扭曲使得它更复杂。 从默认的新MVC3应用程序开始,我将路由更改为: routes.MapRoute( “r1”, // Route name “{controller}/{id}/{action}” ); routes.MapRoute( “r2”, // Route name “{controller}/{action}” ); 请注意,id位于第一个操作之前。 然后在Home \ Index.cshtml中,我添加: @Url.Action(“Index”) @Url.Action(“Index”, new { id = “blah” }) @Url.Action(“Index”, new { id = “” }) 现在我导航到/ Home / Foo / Index并查看3个生成的链接。 我明白了 “/首页/美孚/索引” “/首页/胡说/索引” “/首页/指数?ID =富” 前两个是有道理的,并且正在使用第一条路线。 但是在第三个链接中,遇到第二个路径,我不明白为什么id = Foo在查询字符串上传递,因为我明确地传递了一个空id。 我希望它只是生成“/ Home […]