Tag: asp.net mvc 3

如何在ASP.NET MVC 3中处理每个键的多个值?

我有以下问题:我在最重要的function中工作的系统之一是搜索页面。 在这个页面中,我有一些选项,如每页记录,开始日期,结束日期和有问题的一个:类型。 必须有可能选择多种类型(大多数时候,所有这些都将被选中)。 为了完成这项工作,我创建了以下内容: Eventos: @Html.ListBox(“events”, Model.Events, new { style = “width: 100%” }) 它创建了一个列表框,我可以在其中选择多个选项,当表单被提交时,我的查询字符串将如下所示: / 10?周期= 9&事件= 1&事件= 3&recordsPerPage = 10 在那里可以看到创建了两个事件(这是我以前说过的类型)。 此页面的操作方法将List作为其参数之一,表示两个events值。 当我想在MVC Contrib中使用它时,问题就开始了。 他们的寻呼机工作得很好,但正如我所要求的那样,我创建了另一个寻呼机,它显示了用户所在之前和之后五个页面的链接。 为此,在我的代码的一部分中,我必须执行以下操作(这与MVC Contrib寻呼机非常相似,有效): public RouteValueDictionary GetRoute(int page) { var routeValues = new RouteValueDictionary(); foreach (var key in Context.Request.QueryString.AllKeys.Where(key => key != null)) { routeValues[key] = Context.Request.QueryString[key]; } routeValues[“page”] = […]

使脚本包包含另一个脚本包

假设我配置了这两个脚本包: bundles.Add(new ScriptBundle(“~/Scripts/Bootstrap”).Include( “~/Content/Scripts/jQuery/jquery-2.1.1.js”, “~/Content/Scripts/Bootstrap/bootstrap.js”)); bundles.Add(new ScriptBundle(“~/Scripts/jQuery”).Include( “~/Content/Scripts/jQuery/jquery-2.1.1.js”)); 如您所见, ~/Scripts/Boostrap使用jQuery JavaScript文件和Bootstrap文件。 这是因为Bootstrap需要jQuery才能工作。 另一方面, ~/Scripts/jQuery只由jQuery文件组成。 我希望有两个捆绑包,以防视图只需要jQuery而不是Bootstrap。 但是,我在这里复制代码,我定义了两次 jQuery JavaScript文件路径。 有没有办法告诉~/Scripts/Boostrap包使用或“注入”另一个包? 像这样的东西: bundles.Add(new ScriptBundle(“~/Scripts/Bootstrap”).UseBundle(“~/Scripts/jQuery”).Include( “~/Content/Scripts/Bootstrap/bootstrap.js”));

MVCvalidation – 使用服务层保持干燥 – 最佳做法是什么?

我试图坚持最好的多层设计实践,并且不希望我的MVC控制器与我的DAL(或任何IRepository)进行交互。 它必须通过我的业务服务层来执行适当的业务规则和validation。 validation – 我不想在我的域模型实体上使用各种validation属性(例如[必需])在控制器中执行validation,因为这揭示了我的前端。 更不用说这项服务也可以通过WPF前端实现。 由于我的validation是在我的服务层完成的,将值返回给UI的最佳做法是什么? 我不想要’void addWhatever(int somethingsID)’,因为我需要知道它是否失败了。 它应该是一个布尔值吗? 它应该是枚举吗? 我应该利用exception处理吗? 或者我应该在将validation属性装饰到Model对象时返回一些类似于MVC使用的IValidationDictionary对象? (如果需要,我可以在UI中使用适配器模式) 我想将我的实体从控制器传递到服务层,并了解validation/数据持久性是否失败。 我也不想忽视这样一个事实:我需要返回一个视图,指出可能validation失败的每个字段的正确错误消息(我希望尽可能保持无痛)。 我有几个想法,所有这些想法都不对。 我觉得答案包括特定于视图的模型实体,但这会导致必须处理的整个映射问题,更不用说这违反了DRY(不要重复自己)原则。 什么是最佳做法?

Asp MVC 4创建类似于Html.BeginForm的自定义html辅助方法

我有以下html: Available Languages: 我想制作一个自定义的html助手并像这样使用它(类似于Html.BeginForm ) @Html.BeginView() { Available Languages: } 我开始制作我的助手方法 public static class BeginViewHelper { public static MvcHtmlString BeginView(this HtmlHelper helper, string viewId) { var parentDiv = new TagBuilder(“div”); parentDiv.MergeAttribute(“data-bind”, “preventBinding: true”); return new MvcHtmlString(); } } 我阅读了如何制作基本的html助手,但我看到的例子并未向我提供如何在我的情况下制作它的信息。 我是asp mvc的新手,非常感谢每一位帮助。 更新2: 显然我错过了一些东西。 我在我的观点中称之为: @Html.BeginView() { test } 一切似乎很好,甚至有智能感知。 但浏览器中的输出如下: Omega.UI.WebMvc.Helpers.BeginViewHelper+MyView { test } 这是我的帮手方法: […]

在MVC3中使用Server.MapPath

我有代码 string xsltPath = System.Web.HttpContext.Current.Server.MapPath(@”App_Data”) + “\\” + TransformFileName 它回来了 C:\inetpub\wwwroot\websiteName\SERVICENAME\App_Data\FileName.xsl 为什么我要获取ServiceController, SERVICENAME的路径? 我想要的App_Data路径 C:\inetpub\wwwroot\websiteName\App_Data\FileName.xsl

ASP.NET MVC 3中的部分页面缓存和VaryByParam

我正在尝试使用ASP.NET MVC 3中提供的新的部分页面缓存。在我看来,我正在使用: 哪个调用控制器方法: [Authorize] [OutputCache(Duration = 6000, VaryByParam = “*”, VaryByCustom = “browser”)] public ActionResult RenderContent(Content content) { return PartialView(content); } 请注意,原始视图和部分视图都使用相同的视图模型。 问题是VaryByParam不起作用 – RenderContent()总是返回相同的缓存HTML,无论传递给哪个视图模型。 有什么关于VaryByParam我不明白吗?

mvc 3相当于function?

我在Asp.Net有一个网站,我试图移植到MVC 3,我之前只使用过MVC 2。 我偶然发现了以下的asp函数 close 看起来这可能与for循环类似,但我不太肯定如何将其转换为MVC 3架构。

避免硬编码控制器和操作名称

ASP.NET MVC似乎鼓励我使用硬编码字符串来引用控制器和操作。 例如,在控制器中: return RedirectToAction(“Index”, “Home”); 或者,在一个视图中: Html.RenderPartial(“Index”, “Home”); 我不想在我的代码中使用硬编码字符串。 我该怎么做才能避免这种情况?

FluentValidation – validation包含Object列表的View Model

我正在尝试包含复杂视图模型的项目的FluentValidation,我在这里阅读文档,但我没有看到如何设置规则来validation在我的视图模型中声明的对象列表。 在下面的示例中,视图模型中的列表包含一个或多个Guitar对象。 谢谢 查看模型 [FluentValidation.Attributes.Validator(typeof(CustomerViewModelValidator))] public class CustomerViewModel { [Display(Name = “First Name”)] public string FirstName { get; set; } [Display(Name = “Last Name”)] public string LastName { get; set; } [Display(Name = “Phone”)] public string Phone { get; set; } [Display(Name = “Email”)] public string EmailAddress { get; set; } public List Guitars { […]

entity framework运行时连接字符串

我想在运行时为我的数据库提供连接字符串。 我正在使用entity framework。 这就是我到目前为止所拥有的 class MyClassDBContext:DbContext { public MyClassDBContext(string str) : base(str) { this.Database.Connection.ConnectionString = str; } } 要使用上面的代码,我试过了 //create connection string EntityConnectionStringBuilder myConn = new EntityConnectionStringBuilder(); myConn.Provider = “System.Data.SqlClient”; myConn.ProviderConnectionString = “user id=xxxx;password=xxxx;server=localhost;database=xxxx;connection timeout=30”; //inject the connection string at runtime MyClassDBContext a = new MyClassDBContext(myConn.ToString()) 上面的代码给了我一个错误,说“不支持Provider关键字”。 为了尝试调试此错误,我尝试了以下操作 MyClassDBContext a = new MyClassDBContext(“metadata=res://*/Model.csdl|res://*/Model.ssdl|res://*/Model.msl;provider=System.Data.SqlClient;provider connection string=user […]