Tag: asp.net mvc

来自1 List 的MVC Multiple DropDownLists

背景:我的页面上有4个下拉列表,它们都使用一个SelectListItem列表来从中提取数据。 所有这4个下拉列表中的所有4个都将具有相同的元素。 每个下拉列表顶部都有一个空元素。 问题:如果我没有从列表中选择呈现第二个的项目,则当页面加载时,第二个列表会自动选择在第一个列表中选择的项目。 这是因为(我认为)列表有一个SelectListItem ,其中Selected = true ,它只是在第二个列表中使用那个。 有没有办法为多个下拉列表使用一个列表源? 我不想重复这个清单4次,除非我绝对要…… 代码 : //this is the list source public IEnumerable PossibleItems { get; set; } //this is the code on my .cshtml page @Html.DropDownListFor(x => x.SelectedItem1, Model.PossibleItems) @Html.DropDownListFor(x => x.SelectedItem2, Model.PossibleItems) @Html.DropDownListFor(x => x.SelectedItem3, Model.PossibleItems) @Html.DropDownListFor(x => x.SelectedItem4, Model.PossibleItems)

AutoMapper.dll中出现“AutoMapper.AutoMapperMappingException”类型的例外,但未在用户代码中处理

不知何故,我的代码不再起作用(它之前使用完全相同的代码工作)。 这就是问题: 代码 我正在尝试使用以下代码将一些对象映射到ViewModels: 组态: Mapper.CreateMap() .ForMember(x => x.Title, opt => opt.MapFrom(src => src.Book.Title)) .ForMember(x => x.Authors, opt => opt.MapFrom(src => src.Book.Authors.Select(x => x.Name).Aggregate((i, j) => i + “, ” + j))) .ForMember(x => x.Identifiers, opt => opt.MapFrom(src => (!string.IsNullOrEmpty(src.Book.Isbn10) ? (“ISBN10: ” + src.Book.Isbn10 + “\r\n”) : string.Empty) + (!string.IsNullOrEmpty(src.Book.Isbn13) ? (“ISBN13: ” + […]

如何在类库项目中配置entity framework

我已经创建了一个类库项目,其中包含entity framework对象,该对象将负责我的多个项目的公共数据访问层。在将生成的dll文件添加到我的域项目并使用类库项目中的实体对象之后,我面临着以下问题。 在应用程序配置文件中找不到名为“ABC”的连接字符串。 我已将edmx的Metadata Artifact处理属性设置为Embed in Output Assembly App.Config标记 实体代码如下 public ABC_IntegrationEntities() : base(“name=ABC”) { } 我从datadirectiory“App_Data”访问数据库还有一件事 我正在引用dotnetcurry.com上的博客。 http://www.dotnetcurry.com/showarticle.aspx?ID=617 提前致谢!

覆盖代码生成的DbContext构造函数

我确定我在某个阶段之前已经做过这个,但我现在还不清楚怎么做! 我的情景: // This is generated from EDMX public partial class HOLDbEntities : DbContext { public HOLDbEntities() : base(“name=HOLDbEntities”) { } } 现在,我希望这个连接字符串很容易更改(我想从HOLDbEntities实现),所以我需要覆盖这个构造函数。 我试过了: public partial class HOLDbEntities { private const string _contextName = “HOLDbEntities”; public static string ContextName { get { return _contextName; } } public HOLDbEntities() : base(ContextName) { } } 但这会引发一个错误: HOLDbEntities已经定义了一个名为“HOLDbEntities”的成员,它具有相同的参数类型。 […]

在编辑器模板中迭代集合时,NameFor会生成错误的名称

假设我有一个类型为集合的视图,例如List : @model List @for(int i = 0; i m[i].Foo) @Html.EditorFor(m => m[i].Bar) } Foo和Bar只是字符串属性。 这将生成[i].Foo和[i].Barforms的HTML名称属性,当然,这些属性是正确的,并且在表单中发布时可以正确绑定。 现在假设上面的视图是一个编辑器模板,它是这样呈现的(其中Model.Items是List ): @model WrappingViewModel @Html.EditorFor(m => m.Items) 突然之间,编辑器模板中生成的名称的forms – 例如 – Items.[i].Foo 。 默认模型绑定器不能绑定它,因为它需要表单Items[i].Foo 。 这在第一个场景中运行良好 – 视图不是编辑器模板 – 并且在集合是属性的情况下也可以正常工作,而不是整个模型: @Html.EditorFor(m => m.Items[i].Foo) 它仅在模型本身是集合且视图是编辑器模板时失败。 有几种方法可以解决这个问题,其中没有一个是理想的: 将编辑器模板键入到ItemViewModel的单个实例中 – 这不好,因为相关的实际模板包含用于添加到集合中/从集合中删除的附加标记。 我需要能够使用模板中的整个集合。 将List包装在另一个属性中(例如通过实现ItemListViewModel )并将其传递给模板 – 这也不是理想的,因为这是一个企业应用程序,我宁愿不会因多余的包装视图模型而混乱。 手动生成内部编辑器模板的标记以生成正确的名称 – 这是我目前正在做的但我宁愿避免它,因为我失去了HtmlHelpers的灵活性。 所以,问题是:为什么NameFor (以及因此EditorFor )在这种特殊情况下表现出这种行为,当它适用于轻微变化时(即它是有意的,如果是,为什么)? […]

使用jquery将数据发送到MVC控制器

我有一个ASP.NET MVC3应用程序,当用户点击我的锚标签时,我想将3个数据发送到一个动作: <a onclick='editDescription()’> 这是调用我的动作的javascript: function editDescription(docId,fileName,description) { var url = “@Url.Content(“~/OrderDetail/_EditDescription/”)” + docId+’/’+ fileName + ‘/’ + description; //do the rest} 我的行动: public ActionResult _EditDescription(string id,string filename, string descritpion) 我关注的是文件名和描述,因为这些可以是loooooong,我不希望url如此出现: http://localhost/OrderDetail/_EditDescription/123/some long filename.pdf/this is a long description for the name 如何将数据发送到我的操作而不必像查询字符串一样发送? 谢谢

entity framework在Web api / MVC中使用异步控制器进行处理

我有这个小代码示例: public class ValueController : ApiController { private EstateContext _db; public ValueController() { _db = new EstateContext(); } [HttpPost] public async void DoStuff(string id) { var entity = await _db.Estates.FindAsync(id); //now our method goes out and Dispose method is calling //returns here after disposing _db.SaveChanges(); // _db is disposed } protected override void Dispose(bool disposing) […]

ASP的JSON返回错误

我们正在使用由外部供应商编写的ASP应用程序。 我的任务是对应用程序进行一些小改动但是我对asp或json一无所知。 通过一些研究,我把它放在一起。 我在表单上创建了一个文本框,我想将客户端IP地址返回到该文本框。 我写了一个函数然后一个控制器。 两者的代码如下: function function processgetip(event) { // Within this function, make an AJAX call to get the IP Address $.getJSON(‘@Url.Action(“GetIPAddress”,”getipaddress”)’, function (ip) { // When this call is done, your IP should be stored in ‘ip’, so // You can use it how you would like // Example: Setting a TextBox […]

第一次外部登录尝试重定向回登录操作,第二次登录操作

我在我的ASP.Net MVC 5 / WebApi 2项目中使用OWIN的外部认证提供程序,我遇到了一个奇怪的问题。 登录工作流程就像在SO上一样。 用户点击登录页面,选择提供商并登录。我的问题是,首次点击提供商会重定向回相同的登录页面: http://localhost:57291/Account/Login?ReturnUrl=%2fAccount%2fExternalLogin 如果ExternalLogin操作缺少AllowAnonymous属性,这将有意义。 当用户第二次点击时一切正常。 我也尝试过使用不同的浏览器,问题在Chrome,IE11和Firefox中都是一致的。 Login.cshtml: @using (Html.BeginForm(“ExternalLogin”, “Account”, new { ReturnUrl = ViewBag.ReturnUrl })) { @Strings.ExternalAuthenticationProvidersDescription @foreach (var p in Model.ExternalAuthenticationProviders) { @p.Caption } } AccountController.cs public class AccountController : Controller { … [AllowAnonymous] [HttpPost] public ActionResult ExternalLogin(string provider, string returnUrl) { return new ChallengeResult(provider, Url.Action(“ExternalLoginCallback”, “Account”, […]

WebApi在filter内获取后期原始主体

我’创建一个日志,我需要检索请求体以保存在db中。 我用HttpActionContext创建了一个filter。 我尝试通过filterContext.Request.Content.ReadAsStringAsync()恢复。 但它总是给我一个空字符串。 LogFilter.cs public override void OnActionExecuting(HttpActionContext filterContext) { try { Task content = filterContext.Request.Content.ReadAsStringAsync(); string body = content.Result; logModel.RequestLog rl = new logModel.RequestLog(); rl.IP = ((HttpContextWrapper)filterContext.Request.Properties[“MS_HttpContext”]).Request.UserHostAddress; rl.Type = filterContext.ControllerContext.RouteData.Values[“controller”].ToString().ToUpper(); rl.URL = filterContext.Request.RequestUri.OriginalString; rl.Operation = filterContext.Request.Method.Method; rl.RequestDate = DateTime.Now; filterContext.ControllerContext.RouteData.Values.Add(“reqID”, new deviceLog.RequestLog().Add(rl).ID.ToString()); } catch { } //return new deviceLog.RequestLog().Add(rl); base.OnActionExecuting(filterContext); }